全选的问题

chaye12 2008-12-12 04:22:06
我的gridview1的第3列我加了一个模板列,然后里面放了一个checkbox控件,我想在girdview外面放一个checkbox,当此checkbox被选中的时候,girdview里面的checkbox全部选中,改在checkbox的哪个事件里写什么代码,非常简单,需要快速实现,
...全文
279 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
wincats 2010-02-04
  • 打赏
  • 举报
回复
顶顶看答案
yinzheng529 2009-05-09
  • 打赏
  • 举报
回复
用js
limpid_123 2009-03-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 apple02180503 的回复:]
C# code
protected void chkAllSub_CheckedChanged(object sender, EventArgs e)
{
if (chkAllSub.Checked)
{
foreach (GridViewRow gvrCriterion in gvCriterion.Rows)
{
CheckBox chkGvrSub = (CheckBox)gvrCriterion.FindControl("chkSub");
chkGvrSub.Checked = true;

[/Quote]


up
chuxue1342 2008-12-12
  • 打赏
  • 举报
回复
把0改成你的列!
chuxue1342 2008-12-12
  • 打赏
  • 举报
回复
不用那么复杂!

/// <summary>
/// 处理全选按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox cb1 = (CheckBox)(GridView1.Rows[i].Cells[0].FindControl("cb"));
cb1.Checked = CheckBox1.Checked;
}
}
chaye12 2008-12-12
  • 打赏
  • 举报
回复
我换了个button,结果加了2句就搞定了,但是有刷新,
foreach (GridViewRow gr in GridView2.Rows)
{
CheckBox chk = (CheckBox)gr.FindControl("CheckBox2");
chk.Checked = true;

}
chaye12 2008-12-12
  • 打赏
  • 举报
回复
我按照5楼的代码重新写了一下
if (!IsCallback)
{
if (CheckBox1.Checked)
{
foreach (GridViewRow gr in GridView2.Rows)
{
CheckBox chk = (CheckBox)gr.FindControl("CheckBox2");
chk.Checked = true;

}

}
else
{
foreach (GridViewRow gr in GridView2.Rows)
{
CheckBox chk = (CheckBox)gr.FindControl("CheckBox2");
chk.Checked = false;

}
}
}
  • 打赏
  • 举报
回复
在gridview外边不要放checkbox,不然当它取消选择时应该是什么功能就难以捉摸了。你可以放两个button,如下声明:

    <input type="button" value="全选" onclick="<%= Get全选脚本 %>" />
<input type="button" value="反选" onclick="<%= Get反选脚本 %>" />

然后,页面的代码中实现这两个脚本(假设你的GridView的ID是GridView1,而每一行中要处理的CheckBox的ID是chb):
    protected string Get反选脚本
{
get
{
string scp = "var ids=[";
foreach (GridViewRow r in this.GridView1.Rows)
{
CheckBox ch = (CheckBox)r.FindControl("chb");
if (ch != null)
scp += "'" + ch.ClientID + "',";
}
scp += "''];for(i=0;i<ids.length-1;i++) {var obj=document.getElementById(ids[i]);obj.checked=!obj.checked;};";
return scp;
}
}

protected string Get全选脚本
{
get
{
string scp = "var ids=[";
foreach (GridViewRow r in this.GridView1.Rows)
{
CheckBox ch = (CheckBox)r.FindControl("chb");
if (ch != null)
scp += "'" + ch.ClientID + "',";
}
scp += "''];for(i=0;i<ids.length-1;i++) {var obj=document.getElementById(ids[i]);obj.checked=true;};";
return scp;
}
}


不管你的页面上还有没有其它的GridView,页面上还有没有其它的CheckBox,以及待处理的GridView的每一行中除了这个CheckBox还有没有其他的CheckBox,不管你是开发aspx还是ascx,上面这个设计总是很简洁直观并且精确地工作的。有些其它写法,并不能保证在上述情况下精确地工作,要求你在设计时有很多额外的注意点,而且就算注意了这些也不能确保正确。
HDNGO 2008-12-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 chaye12 的回复:]
为什么我选中外面的checkbox,或者不选中,都没变化呢,真晕!
[/Quote]

你配合JS了?
chaye12 2008-12-12
  • 打赏
  • 举报
回复
为什么我选中外面的checkbox,或者不选中,都没变化呢,真晕!
gpogpo 2008-12-12
  • 打赏
  • 举报
回复
这个是实现代码,希望对你有帮助

<thead>
<tr>
<th class="thCenter" nowrap>
<input type="checkbox" name="seleckAll" value="on" onclick="checkAll(this,form);" class="inpCheck">
</tr>
<tr id="trDetail0" ondblclick="detail();" onclick="lineSelect(trDetail0);">
<td class="tdCenter" nowrap>
<input type="checkbox" name="selItem" value="on" class="inpCheck">
</td>
</tr>
HDNGO 2008-12-12
  • 打赏
  • 举报
回复
<asp:TemplateField HeaderText="<input type='checkbox' id='chk' name='chk' onclick='checkJs(this.checked);'  />全选">
<ItemTemplate>
<input type="checkbox" id="checkboxname" name="checkboxname" value='<%# DataBinder.Eval(Container.DataItem, "Id")%>' onclick='SingleCheckJs();' />
</ItemTemplate>
<ItemStyle BorderColor="White" />
</asp:TemplateField>


前台~
HDNGO 2008-12-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chaye12 的回复:]
我想用.net实现,你说用html实现就给下代码,
[/Quote]

能实现又简单好看不就好了?JS实现起码不会ispostback哇~

获得值也很容易~Request.Form.Get("checkboxname")就能得到勾了的~
chaye12 2008-12-12
  • 打赏
  • 举报
回复
这是我的代码,实现不了
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
if (!IsCallback)
{
for (int i = 0; i < GridView2.Rows.Count; i++)
{

Response.Write("一共有" + i + "项");
CheckBox chk = (CheckBox)GridView2.Rows[i].FindControl("CheckBox2");
if (chk.Checked == false)
{
chk.Checked = true;
}



}


}


}
apple02180503 2008-12-12
  • 打赏
  • 举报
回复

protected void chkAllSub_CheckedChanged(object sender, EventArgs e)
{
if (chkAllSub.Checked)
{
foreach (GridViewRow gvrCriterion in gvCriterion.Rows)
{
CheckBox chkGvrSub = (CheckBox)gvrCriterion.FindControl("chkSub");
chkGvrSub.Checked = true;
}
}
ELSE
{
foreach (GridViewRow gvrCriterion in gvCriterion.Rows)
{
CheckBox chkGvrSub = (CheckBox)gvrCriterion.FindControl("chkSub");
chkGvrSub.Checked = FALSE;
}

}

}
//chkAllSub GridView外的checkbox
//chkSub girdview里面的checkbox

sportdog 2008-12-12
  • 打赏
  • 举报
回复
checkbox有啥事件,你就在里面写呗。onclick?oncheck?

函数
判断checkbox是否选中
遍历整个gridview设置选中状态
chaye12 2008-12-12
  • 打赏
  • 举报
回复
我想用.net实现,你说用html实现就给下代码,
lawbc 2008-12-12
  • 打赏
  • 举报
回复
客户端js全选的话 服务器是识别不到的,不过再加隐藏域就行了,我是这样做的
HDNGO 2008-12-12
  • 打赏
  • 举报
回复
放个HTML的就成了。。。客户端直接JS全选~

62,067

社区成员

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

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

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

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