如何做到点击一个checkbox然后便能触发使datagrid1下的中的checkbox的状态都被选中?详细如下:

parsely 2003-09-29 07:08:27
我把数据梆定在了一个datagrid下,然后显示出来了,如下:

我俱体解释一下:
datagrid id="dg_Cart"
我想点击以下这个CheckBox
<HeaderTemplate>
<asp:CheckBox id="ckb_All" runat="server"></asp:CheckBox>
</HeaderTemplate>
然后能使如下的CheckBox全被选中
<ItemTemplate>
<asp:CheckBox id="ckb_Select" runat="server"></asp:CheckBox>
</ItemTemplate>

这个功能要如何实现呢,我想是不是JAVASCRIPT能实现啊,不会要写c#代码才能实现吧?
请大家帮忙,先谢了

...全文
47 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
parsely 2003-10-02
  • 打赏
  • 举报
回复
谢谢 webdiyer(陕北吴旗娃) ,谢谢以上所有帮助我的人。
webdiyer 2003-10-02
  • 打赏
  • 举报
回复
我的代码完全可行,你的错误在于:
1、将CheckBox的AutoPostBack设成了true,以至于点击后即回发,而我的代码是在客户端实现的,不需要回发,你应该去掉 AutoPostBack="True" onCheckedChanged="myCheckHandler 这句。
2、你的CheckBox的id必须和我的脚本代码中使用的相同,即Header中的CheckBox的id应该是 ckb_All,ItemTemplate中的CheckBox的id应该是 ckb_Select ,如果改动了这几个CheckBox的id,则必须同时修改上面的脚本代码中的ckb_All和ckb_Select。
elfzzf 2003-10-02
  • 打赏
  • 举报
回复
“DataGrid_bankroll ”改成你的Datagrid 的名字
elfzzf 2003-10-02
  • 打赏
  • 举报
回复
//领分来啦!
//e为例从0开始数 r为控钮控件(一个名为全选,一个为取消。) 一切OK。
function selectAll(e,r)
{


if ( r.value=="全选")
{ r.value="取消";
oTable=document.all["DataGrid_bankroll"];
var iCell=e; //第几列
for (var i=1;i<oTable.rows.length;i++)
oTable.rows[i].cells[iCell].children[0].checked=true;}
else { r.value="全选";
oTable=document.all["DataGrid_bankroll"];
var iCell=e; //第几列
for (var i=1;i<oTable.rows.length;i++)
oTable.rows[i].cells[iCell].children[0].checked=false;}

}
//思归大哥不要介意,我看了你给其它网友的回复,在此领分:)
parsely 2003-10-02
  • 打赏
  • 举报
回复
webdiyer(陕北吴旗娃)的方法

我试了,可是没反应啊?我用了这种方法,(是gOODiDEA(无语) 的方法)
<asp:CheckBox id="Ckb_All" runat="server" AutoPostBack="True" onCheckedChanged="myCheckHandler"></asp:CheckBox>,能实现的,
可是他是服务器上执行的,总是刷新页面,我就是想要一个不刷新页面的方法,只有用Javascript能实现,我的两个源文件在这里 http://www.rczx.com/checkbox_problem.rar,大家能否给我看一下,非常感激!必给分
谢谢以上朋友的热心支持!
webdiyer 2003-10-01
  • 打赏
  • 举报
回复
把这段代码加在aspx页的<head>与</head>部分:

<SCRIPT LANGUAGE="JavaScript">
<!--

function CheckAll(){
var dom=document.all;
var el=event.srcElement;
if(el.id.indexOf("ckb_All")>=0&&el.tagName=="INPUT"&&el.type.toLowerCase()=="checkbox"){
var ischecked=false;
if(el.checked)
ischecked=true;
for(i=0;i<dom.length;i++){
if(dom[i].id.indexOf("ckb_Select")>=0&&dom[i].tagName=="INPUT"&&dom[i].type.toLowerCase()=="checkbox")
dom[i].checked=ischecked;
}
}
}

//-->
</SCRIPT>

再给<body>标签加上:onclick="CheckAll()",使它象这样:<body onclick="CheckAll()">,应该可以了!
lyhold 2003-10-01
  • 打赏
  • 举报
回复
up
parsely 2003-10-01
  • 打赏
  • 举报
回复
我改成这个样子

public void myCheckHandler ( object src, EventArgs e )
{
if(Ckb_All.Checked=false)
{
for( int i = 0; i < dg_Cart.Items.Count; i++ )
{
CheckBox chk = ( CheckBox )dg_Cart.Items[i].FindControl("Ckb_Sel");
chk.Checked = true;
}

if(Ckb_All.Checked=true)
{
for( int i = 0; i < dg_Cart.Items.Count; i++ )
{
CheckBox chk = ( CheckBox )dg_Cart.Items[i].FindControl("Ckb_Sel");
chk.Checked = false;
}
}

}

生成的时候没问题,可是为什么一运行的时候是这样的,报错如下:

未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 59: public void myCheckHandler ( object src, EventArgs e )
行 60: {
行 61: if(Ckb_All.Checked=false)
行 62: {
行 63: for( int i = 0; i < dg_Cart.Items.Count; i++ )


源文件: c:\inetpub\wwwroot\upload_images\del_multiple_checkbox_item.aspx.cs 行: 61
parsely 2003-10-01
  • 打赏
  • 举报
回复
我想把 gOODiDEA(无语) 的答案改成这样:(就是第一次点击(CheckBox id="ckb_All")时,其它的(CheckBox id="ckb_Select")都被选中,再一次点击时,刚才选 中的ckb_Select又都被设为初始状态

for( int i = 0; i < dg_Cart.Items.Count; i++ )
{
CheckBox chk = ( CheckBox )dg_Cart.Items[i].FindControl("Ckb_Sel");
chk.Checked = true;
}

if(Ckb_all.Checked = true) //这句话有错,应该怎么写啊?
{for( int i = 0; i < dg_Cart.Items.Count; i++ )
{
CheckBox chk = ( CheckBox )dg_Cart.Items[i].FindControl("Ckb_Sel");
chk.Checked = false;
}

}


(CheckBox)Ckb_All.Checked = true //这样写也不行啊

不知道我的想法对不对,还有出错的那句话如何写啊,出错如下:
c:\inetpub\wwwroot\upload_images\del_multiple_checkbox_item.aspx.cs(65): 找不到类型或命名空间名称“Ckb_All”(是否缺少 using 指令或程序集引用?)
parsely 2003-09-30
  • 打赏
  • 举报
回复
<HeaderTemplate>
<asp:CheckBox id="ckb_All" runat="server" onclick="aaa(this)"></asp:CheckBox>
</HeaderTemplate>

我把这名话加上后,onclick 下面有红色波浪线,是不是因为runat="server" ,所以不支持客户端的onclick="aaa(this)"事件啊
parsely 2003-09-30
  • 打赏
  • 举报
回复
pignet(猪.net):
我想要的就是你的这种方法,要客户端现实这种功能,但是不好使啊,是不是什么地方还需要改动一不啊?
liuchangsheng 2003-09-30
  • 打赏
  • 举报
回复
你可以用下面的方法:
'***********************************
'函数名称:prvFunChkTrue()
'函数功能:使checkbox为选中状态
'编写时间:2003-09-10
'编 写 人:
'***********************************
Private Function prvFunChkTrue()
Dim myitem As DataGridItem
For Each myitem In DataGrid1.Items
If CType(myitem.Cells(11).FindControl("chkYesNo"), CheckBox).Checked = False Then
CType(myitem.Cells(11).FindControl("chkYesNo"), CheckBox).Checked = True
End If
Next
End Function
parsely 2003-09-30
  • 打赏
  • 举报
回复
都没有解决啊 saucer(思归)大哥的方法有点难,没看懂, gOODiDEA(无语) 的方法没有调试出来,真的是没辙了!!
gOODiDEA 2003-09-30
  • 打赏
  • 举报
回复
试试:

设置ckb_All的AutoPostBack为True
在ckb_All的Click事件中
for( int i = 0; i < DataGrid1.Items.Count; i++ )
{
CheckBox chk = ( CheckBox )DataGrid1.Items[i].FindControl("ckb_Select");
chk.Checked = true;
}
saucer 2003-09-30
  • 打赏
  • 举报
回复
>>>"onclick 下面有红色波浪线"

don't worry, it is just a warning

you can also use RowSelectorColumn, see

http://www.metabuilders.com/Tools/RowSelectorColumn.aspx

also see
http://www.datagridgirl.com/rowselector.aspx
parsely 2003-09-30
  • 打赏
  • 举报
回复
好几天了还没有解决,郁闷
pignet 2003-09-29
  • 打赏
  • 举报
回复
<HeaderTemplate>
<asp:CheckBox id="ckb_All" runat="server" onclick="aaa(this)"></asp:CheckBox>
</HeaderTemplate>

<ItemTemplate>
<asp:CheckBox id="ckb_Select" runat="server"></asp:CheckBox>
</ItemTemplate>
<script>
function aaa(e)
{
var obj = document.all.tags("input");
for(int i=0;i<obj.length;i++)
{
if(obj[i].type == "checkbox")
{
if(e.checked)
{
obj[i].checked = true;
}
else
{
obj[i].checked = false;
}
}
}
}
</script>
parsely 2003-09-29
  • 打赏
  • 举报
回复
思归大哥,你在哪啊?
parsely 2003-09-29
  • 打赏
  • 举报
回复
加100分!!!·
gordenfl 2003-09-29
  • 打赏
  • 举报
回复
把ComboBox控件的第三个属性改为true我记不得叫什么名字了

加油!·
加载更多回复(6)

62,041

社区成员

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

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

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

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