我有一个中继器,并有一个复选框。当我点击checkedchanged事件行中的第一个信息时,会在下面显示。但第一次点击后,我有麻烦。有时候信息是一样的。因为foreach总是看到第一次点击。例如,我检查了第二个,我看到了信息。然后我再次点击第二个,我看到了信息,但这次我再次点击了第一个。 Foreach可以采取第一个复选框,最后一个复选框仍然检查,然后再次发回第二个操作。 有什么办法解决这个问题吗? 这是我的示例代码。如何禁用第一个复选框后,其他人点击中继器
<asp:Repeater ID="rptInformations" runat="server">
<ItemTemplate>
<asp:CheckBox ID="ckChoose" runat="server" OnCheckedChanged="ckChoose_CheckedChanged" AutoPostBack="true" />
<div id="foo" runat="server"> ... some basic titles ...</div>
</ItemTemplate>
<asp:Repeater>
<div id="info" runat="server"> ... informations in here (textboxes, labels ..etc)</div>
CodeBehind:
foreach (RepeaterItem item in rptInformations.Items)
{
//CheckBox ckChoose= (CheckBox)sender;
CheckBox ckChoose= item.FindControl("ckChoose") as CheckBox;
if (cBoxChoose.Checked)
{
... database process ...
}
}
您将该foreach放在哪个事件中? – CoderRoller
复选框OnCheckedChanged事件。但我真的不确定,它的效果很好,但我对此表示怀疑。我不确定。它是健康还是最好的方式? – Kadir
如果您的目标是根据中继器中特定项目/行的值选择chkbox,那么我的方法是最好的,您应该尝试一下,因为它直接朝向一个项目,并且它会离开其余的复选框处于原始状态,您的迭代和验证会消耗更多资源。顺便说一句你的代码我越来越UniqueID.ToString()等于current_cbId总是这样它永远不会进入如果,它是正确的? – CoderRoller