Repeater Checkbox永远不会被视为已检查

时间:2014-02-20 16:09:56

标签: c# repeater

我正在尝试查看哪个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

中具有正确的值

1 个答案:

答案 0 :(得分:0)

很可能 rptProducts 在回发后重新绑定。如果是这样,您可以确保使用 IsPostBack 不再发生绑定。

例如,

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