2013-05-22 17 views
8

Wenn der Benutzer auf die Schaltfläche "Änderungen speichern" klickt, muss ich die Werte aller Kontrollkästchen in einem Repeater abrufen. Wenn ich die Werte nicht bekommen kann, ist die ID auch in Ordnung.Werte aller Kontrollkästchen im Repeater abrufen

Master-Seite Code:

<ul class="bulletless"> 
    <asp:Repeater runat="server" ID="newsletter_repeater"> 
     <ItemTemplate> 
      <li><input type="checkbox" value='<%#Eval("id")%>' id='<%#Eval("id")%>'/> <%#Eval("displayTitle")%></li> 
     </ItemTemplate> 
    </asp:Repeater> 
</ul> 

<asp:Button runat="server" CssClass="editButtonOff" Text="Save Changes" ID="SaveNewsletterChanges" OnClick="SaveNewsletterChanges_submit" /> 

Hier ist mein Code hinter:

protected void SaveNewsletterChanges_submit(object sender, EventArgs e) 
{ 
    //the count of the items in the repeater is 2 
    //but the aItem is null 
     foreach(RepeaterItem aItem in newsletter_repeater.Items){ 
     string myId = aItem.ID; 
    } 
} 

Was mache ich falsch?

Antwort

9

Zuerst müssen Sie runat="server" zu Ihrer Checkbox hinzufügen.

Zweitens müssen Sie dem Kontrollkästchen eine ID zuweisen, die sich nicht ändert. Der Repeater kümmern machen die clientseitige ID einzigartig: id="chkDisplayTitle"

Drittens Sie Elemente im Repeater zugreifen wie so:

foreach (RepeaterItem item in CourseAreaRptr.Items) 
     { 
      HtmlInputCheckBox chkDisplayTitle = (HtmlInputCheckBox)item.FindControl("chkDisplayTitle"); 
      if (chkDisplayTitle.Checked) 
      { 
       //HERE IS YOUR VALUE: chkAddressSelected.Value 
      } 
     }