关于CheckBox选中与不选中的问题~求大神~

wyyhsly 2011-11-02 04:20:26
在GridView中,最前列我放了一个CheckBox,现在我有一个CheckBox的框设置enable的属性为false,也就是不可用了,但是我点击全选Button的时候,这个框子还是会被选中,这个如何解决?
我按钮的事件是这样的:
protected void btnSelectAll_Click(object sender, EventArgs e)
{
for (int i = 0; i < this.gvHD.Rows.Count; i++)
{
CheckBox chk = (CheckBox)this.gvHD.Rows[i].FindControl("MsgID");
chk.Checked = true;
}
}
...全文
518 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
hufenglongyy 2011-11-03
  • 打赏
  • 举报
回复
for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
CheckBox chk = (CheckBox)this.GridView1.Rows[i].FindControl("MsgID");
if (chk.Enabled == true)
{
chk.Checked = true;
}

}
Im_Sorry 2011-11-03
  • 打赏
  • 举报
回复
我给你我写的一个全选反选的, 在CheckBox事件中写
这个效果跟你要的是一样的!

仅供你学习参考!

页面前台很简单,就是一个数据源控件,绑定数据,就给你描述的那样!


这个是核心的代码, 另外在给你附加一个 选中获取各个值的代码!!!!
代码:


protected void CheckBox2_CheckedChanged1(object sender, EventArgs e)
{
if (CheckBox2.Checked == true)
{
for (int i = 0; i < Repeater1.Items.Count; i++)
{
((CheckBox)Repeater1.Items[i].FindControl("cb1")).Enabled = false;
((CheckBox)Repeater1.Items[i].FindControl("cb1")).Checked = true;
}
}
else if (CheckBox2.Checked == false)
{
for (int i = 0; i < Repeater1.Items.Count; i++)
{
((CheckBox)Repeater1.Items[i].FindControl("cb1")).Enabled = true;
((CheckBox)Repeater1.Items[i].FindControl("cb1")).Checked = false;
}
}
}



页面有个按钮,获取选中的值!

代码如下:


protected void Button1_Click(object sender, EventArgs e)
{
if (CheckBox2.Checked == false)
{


for (int i = 0; i < Repeater1.Items.Count; i++)
{
if (((CheckBox)Repeater1.Items[i].FindControl("cb1")).Checked == true)
{

Response.Write(((Button)Repeater1.Items[i].FindControl("Button2")).CommandArgument.ToString());

}

}

}
else
{
for (int i = 0; i < Repeater1.Items.Count; i++)
{

Response.Write( ((Button)Repeater1.Items[i].FindControl("Button2")).CommandArgument.ToString());

}

}
}
噢不 2011-11-03
  • 打赏
  • 举报
回复
if (chk.Enabled=false)
{
continue;
}
angel_447083039 2011-11-03
  • 打赏
  • 举报
回复
你是遍历了gridview里的所有的checkbox.
而checkbox 灰化 当然他还是checkbox当然是会被选中的!
wyyhsly 2011-11-03
  • 打赏
  • 举报
回复
唉。。。。各种纠结。。。不对呢~
Specialaspnet 2011-11-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sandy945 的回复:]
if(chk.Enabled)
{
chk.Checked = true;
}
[/Quote]
顶起
wyyhsly 2011-11-02
  • 打赏
  • 举报
回复
那这个属性的值丢了应该怎么解决呢?
阿非 2011-11-02
  • 打赏
  • 举报
回复
看看是不是Enabled 属性的值丢了

就是都是true 没有 false
wyyhsly 2011-11-02
  • 打赏
  • 举报
回复
执行了。。。
阿非 2011-11-02
  • 打赏
  • 举报
回复
看看是不是if 没执行
人称猪 2011-11-02
  • 打赏
  • 举报
回复
我是来学习的
wyyhsly 2011-11-02
  • 打赏
  • 举报
回复
楼上的,么滴效果哦。。。点全选按钮,还是可以全部都选中哦。。。包括灰色的框子~
阿非 2011-11-02
  • 打赏
  • 举报
回复

if(chk.Enabled)
{
chk.Checked = true;
}

wyyhsly 2011-11-02
  • 打赏
  • 举报
回复
protected void btnSelectAll_Click(object sender, EventArgs e)
{
for (int i = 0; i < this.gvHD.Rows.Count; i++)
{
CheckBox chk = (CheckBox)this.gvHD.Rows[i].FindControl("MsgID");
if (chk.Enabled=false)
{
chk.Checked = false;
}
chk.Checked = true;
}
}
判断我也试过了,没用。。。不仅没用,写了这个判断后,当我点击全选后,依然可以全部选中,并且所有的Checkbox都变成灰色不可用的了。。。
zhenhunfan4 2011-11-02
  • 打赏
  • 举报
回复
就像楼上说的,加一句遍历过程中加一句判断就可以了
Hello World, 2011-11-02
  • 打赏
  • 举报
回复
先判断if(CheckBox1.Enabled)
赳赳老陈 2011-11-02
  • 打赏
  • 举报
回复
加一句判断不就行了
protected void btnSelectAll_Click(object sender, EventArgs e)
{
for (int i = 0; i < this.gvHD.Rows.Count; i++)
{
CheckBox chk = (CheckBox)this.gvHD.Rows[i].FindControl("MsgID");
if(chk.Enabled)
{
chk.Checked = true;
}
}
}

62,039

社区成员

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

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

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

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