2014-02-20 27 views
0

我想看看哪些checkbox被選中,這是不是(項目剛一排,這是一個是我或不)直放站複選框從未被視爲檢查

的HTML標記我是:

<asp:Repeater runat="server" ID="rptProducts" OnItemDataBound="rptProducts_ItemDataBound"> 
    <ItemTemplate> 
     <div class="panel panel-default"> 
      <div class="panel-heading"> <%# DataBinder.Eval(Container.DataItem, "ProdType") %> </div> 
      <div class="panel-body"> 
      <%# DataBinder.Eval(Container.DataItem, "ProdName") %>: 
       <asp:CheckBox runat="server" ID="cbSelected" Text="Yes" /> 
       <asp:TextBox runat="server" ID="txtGroupName"></asp:TextBox> 
      </div> 
     </div> 
    </ItemTemplate> 
</asp:Repeater> 

代碼:

if (rptProducts.Items.Count > 0) 
{ 
    for (int count = 0; count < rptProducts.Items.Count; count++) 
    { 
     foreach (RepeaterItem item in rptProducts.Items) 
     { 
      CheckBox ch = item.FindControl("cbSelected") as CheckBox; 
      TextBox tb = item.FindControl("tbGroupName") as TextBox; 
      if (ch.Checked) 
      { 
       if (selectedRB == "") 
       { 
        selectedRB = tb.Text; 
       } 
       else 
       { 
        selectedRB = selectedRB + "," + tb.Text; 
       } 
      } 
     } 
    } 
} 

但是它似乎總是在´if (ch.Checked)´跳過,就好像它從來沒有檢查。

一些來自評論的編輯。這是在點擊按鈕上運行。 protected void btnSubmit_Click(object sender, EventArgs e)

中繼器約束,並顯示精細,並在文本框中txtGroupName

+0

哪裏迭代碼被執行?在表單提交? –

+0

當你調試ch包含什麼? – Srb1313711

+1

你確定'FindControl'是否有效地找到了控件?另外,如果它們被標記爲'runat =「server」',則應該在代碼後面說'cbSelected.Checked'。 – ToastyMallows

回答

0

最有可能rptProducts後是後重新綁定回到正確的價值觀。如果是這樣,您可以通過使用IsPostBack確保綁定不會再次發生。

例如,

protected void Page_Load(object sender, EventArgs e) { 
    if (!IsPostBack) { 
    rptProducts.DataSource = (Some Data) 
    rptProducts.DataBind(); 
    } 
}