我的gridview1的第3列我加了一个模板列,然后里面放了一个checkbox控件,我想在girdview外面放一个checkbox,当此checkbox被选中的时候,girdview里面的checkbox全部选中,改在checkbox的哪个事件里写什么代码,非常简单,需要快速实现,
解决方案 »
- 帮我看下这段简单的代码
- 这个问题让我疯掉!用oledbcommand执行一个插入一条记录的程序
- 网站发布后不能用?
- datagrid 中的 NavigateUrl问题
- CMS的制作,各位老大给点意见,挂3天,散100分
- 两条裤裤,发奖
- 谁有ASP.NET开发的论坛哪(access数据库的,要有原码的)(100分)
- 求教求教asp.net中在线编辑doc文件或者excel文件的解决方法?
- 求救啊!我的DataGrid1.SelectedIndexChanged 问题还没有解决啊!
- asp.net的运行问题?在线等待!
- 如何在gridview中的某一列中添加超链接
- 刚做的SEO工具,开源的,有兴趣的朋友可以一起加入丰富功能
判断checkbox是否选中
遍历整个gridview设置选中状态
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
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;
} }
}
}
能实现又简单好看不就好了?JS实现起码不会ispostback哇~获得值也很容易~Request.Form.Get("checkboxname")就能得到勾了的~
<ItemTemplate>
<input type="checkbox" id="checkboxname" name="checkboxname" value='<%# DataBinder.Eval(Container.DataItem, "Id")%>' onclick='SingleCheckJs();' />
</ItemTemplate>
<ItemStyle BorderColor="White" />
</asp:TemplateField>前台~
<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>
<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,上面这个设计总是很简洁直观并且精确地工作的。有些其它写法,并不能保证在上述情况下精确地工作,要求你在设计时有很多额外的注意点,而且就算注意了这些也不能确保正确。
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; }
}
}
foreach (GridViewRow gr in GridView2.Rows)
{
CheckBox chk = (CheckBox)gr.FindControl("CheckBox2");
chk.Checked = true; }
/// 处理全选按钮
/// </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;
}
}