C# 要选中的一个复选框

C# 要选中的一个复选框,c#,asp.net,gridview,C#,Asp.net,Gridview,我在gridView中有以下复选框函数- <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="chkRow" runat="server" OnCheckedChanged="CheckBoxPN_CheckedChanged" AutoPostBack="true" /> </ItemTemplate> 我使用它来检

我在gridView中有以下复选框函数-

<Columns>
    <asp:TemplateField>
     <ItemTemplate>
        <asp:CheckBox ID="chkRow" runat="server" OnCheckedChanged="CheckBoxPN_CheckedChanged" AutoPostBack="true" />
     </ItemTemplate>
我使用它来检索值。然而,一旦用户选中一个复选框,然后再选中另一个复选框,以前的复选框状态仍然处于选中状态

在选中新复选框时,如何修改代码以取消选中最后一个复选框

编辑
@Neil Knight的答案实现了正确的功能,但是当我使用
checked\u changed
事件时,当选中新复选框时,会触发事件并获得正确的答案。但是,如果取消选中上一个复选框,则会再次触发事件并得到错误的答案。如何停止将
gID
值替换为旧答案?

您可以使用X.L.Ant建议的单选按钮(请记住将它们放入同一组(使用单选按钮的
GroupName=“FOO”
属性执行此操作))

或者(如果复选框是您真正想要使用的)

您可以取消设置所有复选框,但选中的复选框除外(速度非常慢)


ASP.Net示例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>checkboxes</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5"
name="vs_targetSchema">
<script language="javascript">
function SingleSelect(regex,current)
{
re = new RegExp(regex);

for(i = 0; i < document.forms[0].elements.length; i++) {

elm = document.forms[0].elements[i];

if (elm.type == 'checkbox') {

if (re.test(elm.name)) {

elm.checked = false;

}
}
}

current.checked = true;

}
</script>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<table width="100%" align="center">
<tr>
<td>
<br/>aaaa<input type="checkbox" id="chkOne" name="chkOne"
value="aaaa" checked onclick="SingleSelect('chk',this);" />
<br/>bbbb<input type="checkbox" id="chkTwo" name="chkTwo"
value="bbbb" onclick="SingleSelect('chk',this);" />
<br/>cccc<input type="checkbox" id="chkThree" name="chkThree"
value="cccc" onclick="SingleSelect('chk',this);" />
<br/>dddd<input type="checkbox" id="chkFour" name="chkFour"
value="dddd" onclick="SingleSelect('chk',this);" />
<br/>eeee<input type="checkbox" id="chkFive" name="chkFive"
value="eeee" onclick="SingleSelect('chk',this);" />
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>
</form>
</body>
</HTML>

复选框
函数SingleSelect(正则表达式,当前)
{
re=新的RegExp(regex);
对于(i=0;iaaaa

bbbbbb
中交
dddddd
eeee

摘自的答案。

使用单选按钮而不是复选框,它们是用于这种用途的。使用单选按钮时发生的情况与使用单选按钮时完全相同,因为之前的选择始终处于选中状态。这是正确的功能,但却给我带来了一个问题,因为它写入了正确的值。请参阅编辑。@Jambo使用此选项,但在eventhandler中,请确保使用
var chk=sender as复选框;如果(chk.Checked){…}
将其排序为@Destrictor
<ItemTemplate>
    <asp:RadioButton ID="chkRow" runat="server" OnCheckedChanged="CheckBoxPN_CheckedChanged" AutoPostBack="true" GroupName="foo"/>
 </ItemTemplate>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>checkboxes</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5"
name="vs_targetSchema">
<script language="javascript">
function SingleSelect(regex,current)
{
re = new RegExp(regex);

for(i = 0; i < document.forms[0].elements.length; i++) {

elm = document.forms[0].elements[i];

if (elm.type == 'checkbox') {

if (re.test(elm.name)) {

elm.checked = false;

}
}
}

current.checked = true;

}
</script>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<table width="100%" align="center">
<tr>
<td>
<br/>aaaa<input type="checkbox" id="chkOne" name="chkOne"
value="aaaa" checked onclick="SingleSelect('chk',this);" />
<br/>bbbb<input type="checkbox" id="chkTwo" name="chkTwo"
value="bbbb" onclick="SingleSelect('chk',this);" />
<br/>cccc<input type="checkbox" id="chkThree" name="chkThree"
value="cccc" onclick="SingleSelect('chk',this);" />
<br/>dddd<input type="checkbox" id="chkFour" name="chkFour"
value="dddd" onclick="SingleSelect('chk',this);" />
<br/>eeee<input type="checkbox" id="chkFive" name="chkFive"
value="eeee" onclick="SingleSelect('chk',this);" />
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>
</form>
</body>
</HTML>