gridview实现单击checkbox全选代码问题

fisea 2009-05-26 01:34:29
protected void chkSelectAll_CheckedChanged(object sender, EventArgs e)
{
foreach (GridViewRow g in gvShowAll.Rows)
{
CheckBox chk = g.FindControl("chkSelectSingle") as CheckBox;
if (!chk.Checked)
{
chk.Checked = true;
}
else
{
chk.Checked = false;
}
}
//for (int i = 0; i < gvShowAll.Rows.Count ; i++)
//{
// CheckBox chk = this.gvShowAll.Rows[i].FindControl("chkSelectSingle") as CheckBox;
// if (!chk.Checked)
// {
// chk.Checked = true;
// }
// else
// {
// chk.Checked = false;
// }
//}
}
这两种方法都不能实现全选功能啊,请教高手指点!
...全文
123 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
feilin_1221 2009-10-29
  • 打赏
  • 举报
回复
<asp:CheckBox AutoPostBack="true" runat="server" ...>
有設置嗎?
  • 打赏
  • 举报
回复
我在以前一个帖子中贴过代码。http://topic.csdn.net/u/20081212/16/08BD398C-92BD-432D-99C4-3723B6E2035C.html

那个帖子中我补充了依据来说明:写程序要注重清晰可靠,避免想当然。当页面上除了你的GridView还有别的GridView,当页面上还有别的CheckBox,当这个GridView每一行不仅仅只有一个CheckBox而还有别的CheckBox,当你的这个代码是放在ascx中从而组合到其它控件中(例如当在一个页面上重复放两个ascx实例时)......都要确保精确地选择该选择的CheckBox而不会误选择任何不该选择的CheckBox。
major 2009-05-26
  • 打赏
  • 举报
回复
全部代码如下:
////////////////////////////////////////////////////////////////////////////
/// <summary>
/// GridView中复选框的设置
/// </summary>
/// <param name="gv">GridView表格 </param>
/// <param name="checkboxId">GridView表格中Checkbox的编号 </param>
/// <param name="ischecked">选中还是选中 </param>
public static void GridViewCheck(GridView gv,string checkboxId,bool ischecked)
{

if (ischecked)
{
for (int rowindex = 0; rowindex < gv.Rows.Count; rowindex++)
{
((CheckBox)gv.Rows[rowindex].FindControl(checkboxId)).Checked = true;
}

}
else
{
for (int rowindex = 0; rowindex < gv.Rows.Count; rowindex++)
{
((CheckBox)gv.Rows[rowindex].FindControl(checkboxId)).Checked = false;
}

}

}

protected void chkSelectAll_CheckedChanged(object sender, EventArgs e)
{
GridViewCheck(gvShowAll,chkSelectSingle,chkSelectAll.Checked);
}
major 2009-05-26
  • 打赏
  • 举报
回复
不好意思,引用方法写错了
引用方法:GridViewCheck(gvShowAll,chkSelectSingle,chkSelectAll.Checked);
major 2009-05-26
  • 打赏
  • 举报
回复
////////////////////////////////////////////////////////////////////////////
/// <summary>
/// GridView中复选框的设置
/// </summary>
/// <param name="gv">GridView表格</param>
/// <param name="checkboxId">GridView表格中Checkbox的编号</param>
/// <param name="ischecked">选中还是选中</param>
public static void GridViewCheck(GridView gv,string checkboxId,bool ischecked)
{

if (ischecked)
{
for (int rowindex = 0; rowindex < gv.Rows.Count; rowindex++)
{
((CheckBox)gv.Rows[rowindex].FindControl(checkboxId)).Checked = true;
}

}
else
{
for (int rowindex = 0; rowindex < gv.Rows.Count; rowindex++)
{
((CheckBox)gv.Rows[rowindex].FindControl(checkboxId)).Checked = false;
}

}

}
引用方法:GridViewCheck(gvShowAll,chkSelectSingle,gvShowAll.Checked);
lzzz999 2009-05-26
  • 打赏
  • 举报
回复

function DoCheck(flag)// 全选 flag=1 反选 flag=0
{
var inputs = document.getElementById("gvDiv"); //找到GridView的ID
var chks=inputs.getElementsByTagName("input");
for (var i=0; i < chks.length; i++)
{
if (chks[i].type == 'checkbox')
{
chks[i].checked=flag;
}
}
}

--页面
<a onclick="DoCheck(1);" href="#" style="color:White">全选</a> <%--全选--%>
<a onclick="DoCheck(0);" href="#" style="color:White">反选</a> <%--反选--%>
----后台找到选中的CheckBox的对应的主键值
string str_id ="";
for (int i = 0; i < GVSYSLog.Rows.Count; i++)
{
CheckBox cb = GVSYSLog.Rows[i].FindControl("CheckBox1") as CheckBox;
if (cb.Checked == true)
{
string id = GVSYSLog.DataKeys[i].Value.ToString();
str_id = str_id +id+ ",";
}
}
----
希望对你有帮助.
jianglai11 2009-05-26
  • 打赏
  • 举报
回复
function CheckAllC(oCheckbox)
{
var gvList = document.getElementById("<%=gvList.ClientID %>");
for(i = 1;i < gvList.rows.length; i++)
{
gvList.rows[i].cells[0].getElementsByTagName("INPUT")[0].checked = oCheckbox.checked;
}
} <asp:TemplateField><HeaderStyle HorizontalAlign="Center" Width="6%" />
<ItemTemplate>
<asp:CheckBox ID="chbSelect" runat="server" />
</ItemTemplate>
<HeaderTemplate>
<input id="Checkbox1" runat="server" style="width: 20px" type="checkbox" onclick="CheckAllC(this)" />全选
</HeaderTemplate>
</asp:TemplateField>
djf_1985 2009-05-26
  • 打赏
  • 举报
回复
javascript实现
function checkAll(chkAll)
{
//debugger;
var gvSend = document.getElementById("gdvResult");
if(gvSend!=null)
{
if(gvSend.rows.length>0)
{
if(chkAll.checked)
{

for(var i=1;i<gvSend.rows.length;i++)
{
var checkBox = gvSend.rows[i].cells[0].firstChild;
checkBox.checked=true;
}
}
else
{
for(var i=1;i<gvSend.rows.length;i++)
{
var checkBox = gvSend.rows[i].cells[0].firstChild;
checkBox.checked=false;
}
}
}
}
}
雨帝夜泪 2009-05-26
  • 打赏
  • 举报
回复
不错都怪了。
CheckBox chk = g.FindControl("chkSelectSingle") as CheckBox;
if (!chk.Checked)
{
chk.Checked = true;
}
else
{
chk.Checked = false;
}
为什么要else,这不就把你选中的又取消了么。
CheckBox chk = g.FindControl("chkSelectSingle") as CheckBox;
if (!chk.Checked)
{
chk.Checked = true;
}
就可以了。
alex1987214 2009-05-26
  • 打赏
  • 举报
回复

/// <summary>
/// 全选
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void checkAll(object sender, EventArgs e)
{
CheckBox cb = (CheckBox)sender;
if (cb.Text == "全选")
{
foreach (GridViewRow gvr in GridView1.Rows)
{
CheckBox cb1 = (CheckBox)gvr.FindControl("check");
cb1.Checked = cb.Checked;
}
}
}
xingzhiasa 2009-05-26
  • 打赏
  • 举报
回复
this.gvShowAll.Rows[i].Cells[?]
还有这么一步的啊……在第几个单元格里……
一、表头表尾 1、自定义多行表头,列合并,行合并 2、删除表身指定列、行 3、固定表头,向下拉动滚动条时,表头固定不动 4、表脚行统计,总计、平均值 二、导入导出 1、导出Excel,Word 2、导入Excel 三、多层嵌套 1、在父GridView中的编辑模板中嵌套一个子GridView 2、三层GridView嵌套 四、分页排序 1、分页 2、列排序,点击列升序、降序排序 五、结合控件 1、CheckBox控件,多选、全选 2、DropDownList控件 3、隐藏控件,当选择处理状态选中备注时,隐藏textbox显示 4、radio控件,选中获取GridView表主键 5、GridView中DropDownList绑定数据,直接绑定显示,无需点击编辑按纽。 6、JavaScript操作checbox实现全选,多选 六、设置属性 1、JavaScript设置GridView行的背景颜色,单偶行的背景颜色,鼠标停留行背景,鼠标选中时的行背景 2、GridView的JavaScript中的行单击,双击、删除提示框、快捷键事件 3、GridView设置属性,单元格文本颜色,单元格背景颜色,表中增加空行 七、无代码 GridView排序、发送邮件、点击行查看详情,内容过长截取 八、选增删改 1、GridView自带的选中、编辑、删除,即CommandField 2、GridView添加记录,在GridView表脚添加控件,用添加记录 3、更新所有记录,GridView直接绑定控件,然后更新 九、主键索引 根据主键多条记录删除,单条记录删除。
1、鼠标经过行时改变行的样式 CssClassMouseOver - 鼠标经过行时行的样式的CSS类名 2、给字段标题加上排序状态 设置其SortTip下的4个属性即可 SortAscImage - 升序提示图片 SortAscText - 升序提示文本 SortDescImage - 降序提示图片 SortDescText - 降序提示文本 3、单击命令按钮弹出确认框 设置其ConfirmButtons属性 CommandName - 命令按钮的CommandName属性 ConfirmMessage - 弹出的确认框所显示的文字 4、每行复选框的全选与取消全选 在模板列的头模板处添加一个复选框,在模板列的项模板处添加一个复选框,然后设置控件的CheckboxAlls属性 CheckboxAllID - 模板列全选复选框ID CheckboxItemID - 模板列项复选框ID 5、固定表头、指定行或指定列 设置其FixRowCol下的6个属性 IsFixHeader - 固定表头否? IsFixPager - 固定分页行否? FixRowIndices - 需要固定的行的索引(用逗号“,”分隔) FixColumnIndices - 需要固定的列的索引(用逗号“,”分隔) TableWidth - 表格的宽度 TableHeight - 表格的高度 EnableScrollState - 是否保持滚动条的状态 6、数据行响应鼠标的单击和双击事件 RowClickButtonID - 行单击事件所对应的按钮的ID RowDoubleClickButtonID - 行双击事件所对应的按钮的ID 7、改变通过CheckBox选中的行的样式 CheckBoxID - 模板列的项复选框的ID CssClassRowSelected - 选中行的样式的CSS类名 8、导出为Excel 在GridView内加一个按钮 CommandName属性设置为“ExportToExcel” CommandArgument属性的值用“;”做分隔符分为两部分,左边的部分为导出Excel的文件名称,右边的部分为需要隐藏的列的索引(列索引用“,”分开) 9、给数据行增加右键菜单 ItemType - 右键菜单的项的类别(Link,Command,Custom,Separator) Icon - 文字左边的图标的链接 Text - 菜单的文字 CommandButtonId - 所调用的命令按钮的ID NavigateUrl - 链接的url Target - 链接的target(Blank,Self,Top) Key - 自定义属性key Value - 自定义属性value 10、扩展分页功能 设置PagingStyle属性为Default

62,052

社区成员

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

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

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

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