2013-05-22 23 views
8

Khi người dùng nhấp vào nút "Lưu thay đổi", tôi cần lấy giá trị của tất cả các hộp kiểm bên trong bộ lặp. Nếu tôi không thể nhận được các giá trị, ID cũng là ok.Nhận giá trị của tất cả các hộp kiểm trong bộ lặp

Thầy mã trang:

<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" /> 

Đây là mã của tôi đằng sau:

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; 
    } 
} 

Tôi đang làm gì sai?

Trả lời

9

Trước tiên, bạn cần phải thêm runat="server" vào hộp kiểm của mình.

Thứ hai, bạn cần chỉ định hộp kiểm một id không thay đổi. Repeater sẽ chăm sóc làm cho id client-side độc ​​đáo: id="chkDisplayTitle"

Thứ ba, bạn truy cập vào các mục trong repeater như vậy:

foreach (RepeaterItem item in CourseAreaRptr.Items) 
     { 
      HtmlInputCheckBox chkDisplayTitle = (HtmlInputCheckBox)item.FindControl("chkDisplayTitle"); 
      if (chkDisplayTitle.Checked) 
      { 
       //HERE IS YOUR VALUE: chkAddressSelected.Value 
      } 
     } 
Các vấn đề liên quan