C# 中继器复选框从未被视为已选中
我正在尝试查看哪个C# 中继器复选框从未被视为已选中,c#,repeater,C#,Repeater,我正在尝试查看哪个复选框被选中,哪个未被选中(只是一行项目,它是“是”或“否”) 我的HTML标记是: <asp:Repeater runat="server" ID="rptProducts" OnItemDataBound="rptProducts_ItemDataBound"> <ItemTemplate> <div class="panel panel-default"> <div class="pan
复选框被选中,哪个未被选中(只是一行项目,它是“是”或“否”)
我的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(rptProducts.Items.Count>0)
{
对于(int count=0;count
然而,如果(ch.Checked)´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´
评论中的一些编辑。这是通过单击按钮运行的<代码>受保护的无效btnSubmit\u单击(对象发送者,事件参数)
中继器已绑定并显示良好,并且在文本框txtGroupName中具有正确的值很可能在回发后重新绑定产品。如果是这样,您可以使用IsPostBack确保绑定不会再次发生 比如说,
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
rptProducts.DataSource = (Some Data)
rptProducts.DataBind();
}
}
迭代代码在哪里执行?在表单提交时?当您调试ch包含什么时?您确定
FindControl
确实正在查找该控件吗?另外,如果它们被标记为runat=“server”
,您应该能够在代码后面说cbSelected.Checked
。您是如何将数据绑定到中继器控件的?请告诉我们您是在哪种情况下绑定的,以及要在哪里检索。@ToastyMallows,只要它在中继器内就行。中继器很可能绑定到新数据,因此未选中复选框。