2016-10-10 5 views
0
<asp:ListView runat="server" ID="lsvAccessMode" ClientIDMode="Static" OnItemDataBound="lsvAccessMode_ItemDataBound"> 
    <ItemTemplate> 
     <div class="col-xs-6 col-md-4 col-xs-12"> 
      <asp:RadioButton runat="server" clientidmode="static" CssClass="customSelectBox disabled" ID="rbAccessMode" GroupName="accessMode" Enabled='<%#Convert.ToBoolean(Eval("IsSelected"))%>' /> 
      <div class="customBox disabled" id="customBox"> 
       <strong><%# Eval("Decode1") %></strong><br> 
       <img src="<%# Eval("ImagePath") %>" style="height: 80px"><br> 
       <span class="help-block"><%# Eval("Decode2") %></span> 
      </div> 
     </div> 
    </ItemTemplate> 
</asp:ListView> 

Ich habe den folgenden Code oben. Wenn ich also auf eine der Schaltflächen oben klicke, wird eine Klasse hinzugefügt. Aber ich bin mit dem folgenden Problem konfrontiert, ich weiß nicht, was in ID-Teil der $(' ').click-Funktion einfügen.auf klicken asp.net Schaltfläche in einem Listenansicht

Kann jemand helfen?

+0

Welcher Knopf, welche Klasse? – Imad

+0

Es enthält drei Radiobuttons und ich bin mir nicht sicher, was ich in die $ (.) .click Klammer setzen soll. Normalerweise setzen wir den ID-Namen .ClientID, aber es funktioniert hier nicht. – Hero1134

Antwort

0

Warum nicht die CSS-Klasse verwenden?

$('.customSelectBox')

z.B.

// attach the handler on the DOM to include all dynamically generated controls, too 
$(document).on('click', '.customSelectBox', function() { 
    // to get the one that was clicked 
    var $this = $(this); 
    // do the rest 
}); 
+0

Ich habe es versucht. Aber es funktioniert nicht. – Hero1134

+0

@ Hero1134 - ja ist es. poste deinen problematischen Code, anstatt nur zu sagen "es funktioniert nicht" – Ted

+0

Ja, ich tat es. Ich implementiere einen Alarm ('Hallo') um zu überprüfen. Aber es funktioniert nicht auf meiner Seite. Vielen Dank. – Hero1134

0

Verwendung Teil id wie unten

$('[id*="rbAccessMode"]').click(
    function() { $(this).addClass("yourClass"); 
}); 
0

Sie können nicht die ID für die Zuordnung einer Funktion zu dem Click-Ereignis aus 2 Gründen verwenden.

Sie verwenden ClientIDMode="Static", so wird es mehrere IDs auf der Seite mit dem gleichen Wert geben.

Auch wenn Sie ClientIDMode="Static" entfernen würde, Sie sind noch nicht in der Lage, die ID rbAccessMode zu verwenden, da es in einer Steuerung ist, die Daten wiederholt werden rbAccessMode in wie dieses lsvAccessMode_rbAccessMode_2 etwas gedreht werden keine doppelten IDs, um sicherzustellen, gibt es.

Entfernen Sie alle ClientIDMode="Static" Attribute und weisen Sie das Klickereignis basierend auf dem Klassennamen zu.

0

Vielen Dank, ich habe es geschafft, die Frage mit all Ihrer Hilfe zu lösen. Dank der Vorschläge von Joel und Ted habe ich die DOM-Struktur meines Codes geändert. Dank VDWWD habe ich den ClientIDMode = "Static" entfernt und es funktioniert. Unten ist mein Arbeitscode.

$(document).on('click', '#selectorBox', function() { 
     $(this).children().addClass('active'); 
    }); 


<asp:ListView runat="server" ID="lsvAccessMode" ClientIDMode="Static" OnItemDataBound="lsvAccessMode_ItemDataBound"> 
<ItemTemplate> 
    <div id="selectorBox" class="col-xs-6 col-md-4 col-xs-12" runat="server" clientIDMode="Static"> 
     <asp:RadioButton runat="server" CssClass="customSelectBox disabled" ID="rbAccessMode" GroupName="accessMode" Enabled='<%#Convert.ToBoolean(Eval("IsSelected"))%>' /> 
      <div class="customBox disabled" id="customBox"> 
       <strong><%# Eval("Decode1") %></strong><br> 
        <img src="<%# Eval("ImagePath") %>" style="height: 80px"><br> 
         <span class="help-block"><%# Eval("Decode2") %></span> 
       </div> 
     </div> 
</ItemTemplate> 

ich eine zusätzliche ID in der übergeordneten Klasse hinzugefügt genannt Anstatt also Aufruf direkt auf den Button, ich seine Eltern dann die .children mit navigieren nach unten() -Methode. Danke euch noch einmal. Hoffe, mein Beitrag könnte Menschen besonders Anfänger helfen, die neu in asp.net sind.

Verwandte Themen