首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • GridView问题 [已结帖,结帖人:wuyan0319]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wuyan0319
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-11-02 12:19:07 楼主
    <asp:GridView ID="GridView1" runat="server">
            <Columns>
                <asp:TemplateField HeaderText="选择" >
                      <ItemTemplate>
                      <asp:CheckBox ID="chbSelectRow" runat="server" Width="20px"  onclick="getAll()"/>           
                      </ItemTemplate>
                      <ItemStyle Width="80px" HorizontalAlign="Center" />
                      </asp:TemplateField>
            </Columns>
            </asp:GridView>

    用js如何获取选中的 CheckBox
    谢谢
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tmxk2002
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-02 12:23:461楼 得分:2
    gridview 最后生成的其实就是一个table,这个table有row和cell,你checkbox所在的列是已知的,用js查找这个列,遍历这个列的所有行,检查每个checkbox的checked就知道了啊。

    还有一个办法,你所有的checkbox的name设置为一样的,然后调用document.all[name],我记得是可以拿到一个有相同名称的object数组的,你再验证他们的checked就可以了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gjfizx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-02 12:24:042楼 得分:2
    用input的checkbox,然后var chk = document.getElementByTagName("input"),最后判断一下是不是checkbox就ok了

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Zyb_LoveC
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-02 12:24:093楼 得分:2
    GridView里面的控件生成html控件都建id都会在前面加上GridView_后面还有几个,最后是你设定的ID。你可以根据这个来取得。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-02 12:44:344楼 得分:2
    你的 getAll 搁的不是正确地方。我写个demo:

    HTML code
    <asp:GridView ID="GridView1" runat="server" ............> <Columns> <asp:TemplateField HeaderText="选择"> <ItemTemplate> <asp:CheckBox ID="chbSelectRow" runat="server" /> </ItemTemplate> </asp:TemplateField> ............... </Columns> </asp:GridView> <input type="button" value="全选" onclick="<%= Get全选脚本 %>" /> <input type="button" value="反选" onclick="<%= Get反选脚本 %>" />


    代码中写:
    C# code
    protected string Get反选脚本 { get { string scp = "var ids=["; foreach (GridViewRow r in this.GridView1.Rows) { CheckBox ch = (CheckBox)r.FindControl("chbSelectRow"); 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("chbSelectRow"); 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 false;"; return scp; } }

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-02 12:53:565楼 得分:2
    “全选、反选”按钮肯定要放在GridView之外,才符合逻辑。

    “用js查找”?!可能你遇到的经验比较少,可能不太清楚这里的陷阱。好的做法不是用一段“通用的js查找”来实现,而是由asp.net精确地生成js代码。这个“精确”是要点。

    在开发时可能随时需要往页面上放不止一个GridView,甚至可能吧GridView放在用户控件中并且在页面上放一个或者多个此用户控件,此时GridView的ID和CheckBox的ClientID都是随时变动的,并且页面上有多种GRidView和CheckBox。因此软件写得比较可靠的人会写一种在变化中永远保持不出错的写法,写程序不用考虑别的控件的干扰因此显得简单直观,又不受干扰因此一次写出之后也不会在页面上“疯狂”修改其它控件时出错。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-02 12:56:366楼 得分:2
    嗯,上面的“return false;”是多余的,也没有任何错误,只是多余的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gjfizx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-02 12:59:147楼 得分:2
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • huandaohack
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-02 12:59:508楼 得分:2
    CheckBox ch = (CheckBox)r.FindControl("chbSelectRow");
    支持这种方法。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wuyan0319
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-02 14:35:419楼 得分:0
    谢谢您的指点!受益非浅!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-02 14:44:3210楼 得分:2
    我现在还是不太明白你的getAll脚本函数来获取所有选中的CheckBox到底是何意思。这个例子中用“反选”这个功能的demo说明你可以在一个动态生成的脚本中遍历所有CheckBox并且逐一地干一件事(代码里就是obj.checked=!obj.checked),你可以把这个改为:
       
                          if(obj.checked)
                            dosomething(obj);
    之类的,干你要干的事。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kfps8kfps8
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-02 14:47:0011楼 得分:2
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • loverdotnet
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-02 16:01:1212楼 得分:0
    mark
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved