【发布时间】:2013-02-01 23:01:25
【问题描述】:
我在 gridView 中有以下复选框功能-
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkRow" runat="server" OnCheckedChanged="CheckBoxPN_CheckedChanged" AutoPostBack="true" />
</ItemTemplate>
它为 gridView 中创建的每一行创建一个复选框。
我的问题是在事件中-
protected void CheckBoxPN_CheckedChanged(Object sender, EventArgs e)
{
CheckBox chk = (CheckBox)sender;
GridViewRow row = (GridViewRow)chk.NamingContainer;
int gID = System.Convert.ToInt16(row.Cells[1].Text);
gridViewDataSource.SelectCommand = sqlCommand + gID;
}
我正在使用它来检索值。一旦用户检查了一个复选框,然后又去检查另一个复选框,之前的复选框状态仍然处于选中状态。
如何修改代码以在选中新复选框时取消选中最后一个复选框?
编辑
@Neil Knight 的答案实现了正确的功能,但是当我使用 checked_changed 事件时,当新的 checkBox 被选中时,这会触发事件并获得正确的答案。然而,当前一个复选框未被选中时,这会再次触发事件并得到错误的答案。如何阻止 gID 值被旧答案替换?
【问题讨论】:
-
使用单选按钮而不是复选框,它们适用于这种用途
-
在使用单选按钮时会发生完全相同的事情,因为之前的选择始终处于选中状态。