请教:GridView同一中加入了两个CheckBox,现要实现CheckBox1选中时CheckBox2不能选中(相反如同),请教源码

masterkill 2009-03-11 11:32:54
如题,在线等
...全文
478 28 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
masterkill 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 CutBug 的回复:]
那就是这个,注意下面的顺序
<asp:CheckBox runat="server" ID="Chk1" Text="option 1" onclick="singleChecked(this,'Chk1','Chk2')"/>
<asp:CheckBox runat="server" ID="Chk2" Text="option 2" onclick="singleChecked(this,'Chk2','Chk1')" />
[/Quote]
谢谢,问题已经解决
CutBug 2009-03-11
  • 打赏
  • 举报
回复
那就是这个,注意下面的顺序
<asp:CheckBox runat="server" ID="Chk1" Text="option 1" onclick="singleChecked(this,'Chk1','Chk2')"/>
<asp:CheckBox runat="server" ID="Chk2" Text="option 2" onclick="singleChecked(this,'Chk2','Chk1')" />
masterkill 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 CutBug 的回复:]
js function:

JScript codefunction singleChecked(combo,id,otherID)
{
var otherCombo = document.getElementById(combo.id.replace(id,otherID));
if(combo.checked)otherCombo.checked=false;
}



2个checkbox

HTML code<asp:CheckBox runat="server" ID="Chk1" Text="option 1" onclick="singleChecked(this,'Chk1','Chk2')"/>
<asp:CheckBox runat="server" ID="Chk2" Text="option 2" onclick=…
[/Quote]
用您的代码情况如下:若先选CheckBox1,条件满足;若先选CheckBox2再去点击CheckBox1,CheckBox2的打勾状态不会取消
masterkill 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 CutBug 的回复:]
引用 18 楼 masterkill 的回复:
引用 13 楼 CutBug 的回复:
js function:

JScript codefunction singleChecked(combo,id,otherID)
{
var otherCombo = document.getElementById(combo.id.replace(id,otherID));
if(combo.checked)otherCombo.checked=false;
}


2个checkbox

HTML code <asp:CheckBox runat="server" ID="Chk1" Text="option 1" onclick="singleChecked(this,'Chk1','Chk2')"/>

[/Quote]
我把问题再描述一下:有一个GridView,其中我在某一列中加入了两个CheckBox(当然每一行的这一列都有两个CheckBox),分别为CheckBox1和CheckBox2。当选中CheckBox1时再去选CheckBox2,CheckBox1的打勾状态自动取消(若先选CheckBox再选CheckBox1一样),不允许两个同事选中。就是这样
jlj84237485 2009-03-11
  • 打赏
  • 举报
回复
帮顶一下
masterkill 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 CutBug 的回复:]
js function:

JScript codefunction singleChecked(combo,id,otherID)
{
var otherCombo = document.getElementById(combo.id.replace(id,otherID));
if(combo.checked)otherCombo.checked=false;
}



2个checkbox

HTML code<asp:CheckBox runat="server" ID="Chk1" Text="option 1" onclick="singleChecked(this,'Chk1','Chk2')"/>
<asp:CheckBox runat="server" ID="Chk2" Text="option 2" onclick=…
[/Quote]
对不起是我犯错,问题应该是这样:
我先选CheckBox1是可以满足要求的;而如果先选了CheckBox2再点击CheckBox1就没有反应。
CutBug 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 masterkill 的回复:]
引用 13 楼 CutBug 的回复:
js function:

JScript codefunction singleChecked(combo,id,otherID)
{
var otherCombo = document.getElementById(combo.id.replace(id,otherID));
if(combo.checked)otherCombo.checked=false;
}


2个checkbox

HTML code <asp:CheckBox runat="server" ID="Chk1" Text="option 1" onclick="singleChecked(this,'Chk1','Chk2')"/>
<asp:CheckBox runat="server" ID…
[/Quote]
你的意思是每行有一个checkbox,选中一个,其他行的checkbox自动取消?
masterkill 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 CutBug 的回复:]
js function:

JScript codefunction singleChecked(combo,id,otherID)
{
var otherCombo = document.getElementById(combo.id.replace(id,otherID));
if(combo.checked)otherCombo.checked=false;
}



2个checkbox

HTML code<asp:CheckBox runat="server" ID="Chk1" Text="option 1" onclick="singleChecked(this,'Chk1','Chk2')"/>
<asp:CheckBox runat="server" ID="Chk2" Text="option 2" onclick=…
[/Quote]
还有就是只能选CheckBox1而不能选CheckBox2
masterkill 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 CutBug 的回复:]
js function:

JScript codefunction singleChecked(combo,id,otherID)
{
var otherCombo = document.getElementById(combo.id.replace(id,otherID));
if(combo.checked)otherCombo.checked=false;
}



2个checkbox

HTML code<asp:CheckBox runat="server" ID="Chk1" Text="option 1" onclick="singleChecked(this,'Chk1','Chk2')"/>
<asp:CheckBox runat="server" ID="Chk2" Text="option 2" onclick=…
[/Quote]
我刚试了您的代码,有一个问题:当我选中了第一行的CheckBox1的时候,所有行的CheckBox2都不能选中(只希望是当前行的不能);还有就是能不能麻烦帮改改当选中某一行的CheckBox1的时候,如再选择CheckBox2,那么CheckBox1的选中状态自动取消(相反如同),谢谢
CutBug 2009-03-11
  • 打赏
  • 举报
回复
用我的方法试试
hellensee 2009-03-11
  • 打赏
  • 举报
回复
大家好
我是猎头公司的helen
现在有上海的。net开发的职位
4,5年的c#开发经验
英文可以沟通
项目很不错
难得的机会
有感兴趣的朋友联系我
msn:helensee@msn.cn
邮箱:helen@jingjie-wisemen.com
masterkill 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 liuyeede 的回复:]
引用 12 楼 masterkill 的回复:
引用 7 楼 liuyeede 的回复:
protected void ChekBox1_OnClick(object sender, EventArgs e)
{
ChekBox checkBox1 = sender as DropDownList;
int index = (checkBox1.NamingContainer as GridViewRow).RowIndex;
CheckBox chechBox2=(CheckBox)this.GridView.Rows[index].FindControl("CheckBox2");

}

我没看,刚看了一下,有 OnCheckedChanged,没有OnClick事件。
[/Quote]
问题就是说我在用OnCheckedChanged事件时提示什么什么保护机制,其他的代码为会写
liuyeede 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 masterkill 的回复:]
引用 7 楼 liuyeede 的回复:
protected void ChekBox1_OnClick(object sender, EventArgs e)
{
ChekBox checkBox1 = sender as DropDownList;
int index = (checkBox1.NamingContainer as GridViewRow).RowIndex;
CheckBox chechBox2=(CheckBox)this.GridView.Rows[index].FindControl("CheckBox2");

}
[/Quote]
我没看,刚看了一下,有 OnCheckedChanged,没有OnClick事件。
CutBug 2009-03-11
  • 打赏
  • 举报
回复
js function:
function singleChecked(combo,id,otherID)
{
var otherCombo = document.getElementById(combo.id.replace(id,otherID));
if(combo.checked)otherCombo.checked=false;
}


2个checkbox
<asp:CheckBox runat="server" ID="Chk1" Text="option 1" onclick="singleChecked(this,'Chk1','Chk2')"/>
<asp:CheckBox runat="server" ID="Chk2" Text="option 2" onclick="singleChecked(this,'Chk2','Chk1')" />
masterkill 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liuyeede 的回复:]
protected void ChekBox1_OnClick(object sender, EventArgs e)
{
ChekBox checkBox1 = sender as DropDownList;
int index = (checkBox1.NamingContainer as GridViewRow).RowIndex;
CheckBox chechBox2=(CheckBox)this.GridView.Rows[index].FindControl("CheckBox2");
if (checkBox1.Checked)
{
chechBox2.Checked=false;
}
else
{
chechBox2.Checked=true;
}
}
[/Quote]
CheckBox有Click事件?- -#我以为应该在ChangedClick事件中处理。。。我去试试,这样的话就简单了
masterkill 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yangniao 的回复:]
你换一个控件不要用checkbox用radiobutton用这个控件,然后在groupname里边,这个就是组,把他们的组的名字写成相同的,然后就可以实现你要的效果,
当然,如果你要用checkbox的话,用代码来实现啊,对checkbox1进行判断,如果被选中那么checkbox2为false 否则就为真
[/Quote]
我有试过用RadioButton,但我不知道怎么在一列中加入两个RadioButton,将一列中的RadioButton作为一个组我明白,但把一列中的两个RadioButton作为一个组的话岂不是会有很多ID?是不是有多少行,就得建多少组?
masterkill 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 liuyeede 的回复:]


C# codeprotected void ChekBox1_OnClick(object sender, EventArgs e)
{
ChekBox checkBox1 = sender as DropDownList;
int index = (DropDownList1.NamingContainer as GridViewRow).RowIndex;
CheckBox chechBox2=(CheckBox)this.GridView.Rows[index].FindControl("CheckBox2");
if (checkBox1.Checked)
{
chechBox2.Checked=false;
}
else
{
chechBox2.Checked=true;
}

[/Quote]
问题补充:应该是说当选中CheckBox1再去选CheckBox2时,CheckBox1的勾勾自动取消(相反如同),即实现RadioButton的效果;不用RadioButton的原因是:我现在用CheckBox已经实现分页保存问题,且也解决了以前将资料导出到Excel档时由于重新绑定数据导致就算保存了CheckBox状态也没效果的问题。
还有就是,我在CheckBox中加入属性 OnCheckedChanged="CheckBox1_CheckedChanged",但提示说“不可访问,因为它受保护级别限制”,不知道为什么,上面的代码为有写过,就是出现这个问题
yangniao 2009-03-11
  • 打赏
  • 举报
回复
楼主的checkbox好像是放在一个数据绑定控件的编辑模板里边吧,如果直接由一个事件,在事件里边写代码不知道可行不可行,不知道大家怎么看那?
cyz9977 2009-03-11
  • 打赏
  • 举报
回复
二選一的話用radiobutton

用代碼控制checkbox 降低了效率
liuyeede 2009-03-11
  • 打赏
  • 举报
回复
protected void ChekBox1_OnClick(object sender, EventArgs e)
{
ChekBox checkBox1 = sender as DropDownList;
int index = (checkBox1.NamingContainer as GridViewRow).RowIndex;
CheckBox chechBox2=(CheckBox)this.GridView.Rows[index].FindControl("CheckBox2");
if (checkBox1.Checked)
{
chechBox2.Checked=false;
}
else
{
chechBox2.Checked=true;
}
}
加载更多回复(8)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧