我正在尝试查看哪个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)
很可能 rptProducts 在回发后重新绑定。如果是这样,您可以确保使用 IsPostBack 不再发生绑定。
例如,
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
rptProducts.DataSource = (Some Data)
rptProducts.DataBind();
}
}