GridView全选、反选,包括分页状态

            

    页面上2个控件,一个GridView,一个CheckBox.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="temp.aspx.cs" Inherits="Query_temp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>   
    <script type="text/javascript">
  //<![CDATA[
  function CheckAll(oCheckbox)
  {
   var GridView2 = document.getElementById("<%=GridView1.ClientID %>");
   if( GridView2.rows.length < <%=GridView1.PageSize %>)
   {
        total = GridView2.rows.length;
   }
   else
   {
        total = GridView2.rows.length-1;
   }
   for(i = 1;i < total; i++)
   {
    GridView2.rows[i].cells[0].getElementsByTagName("INPUT")[0].checked = oCheckbox.checked;
   }
  } 
  //]]>
  </script>
</head>
<body>
    <form id="form1" runat="server">
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="True">
            <Columns>
                <asp:TemplateField HeaderText="选中">
                    <ItemTemplate>
                        <asp:CheckBox ID="CheckBox1" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="镇名称" HeaderText="镇名称" />
                <asp:BoundField DataField="镇代码" HeaderText="镇代码" />
            </Columns>
        </asp:GridView>
         <asp:CheckBox ID="CheckBox2" runat="server" Text="全选" onclick="CheckAll(this)"  />
    </form>
</body>
</html>

    注意红色部分GridviewID的对应,绿色是用JS脚本调用,蓝色部分,如果没有分页,代码应该是:

GridView2.rows.length

即可。后台绑定数据就不用说了。

    反选实现:

   GridView2.rows[i].cells[0].getElementsByTagName("INPUT")[0].checked = (!GridView2.rows[i].cells[0].getElementsByTagName("INPUT")[0].checked);
  

函数浓缩版:

  function CheckAll(oCheckbox,id) //全选函数  oCheckbo一般为this id为GridView控件ID名
  {
   var GridView2 = document.getElementById(id);
   for(i = 0;i < GridView2.rows.length; i++)
   {
   obj= GridView2.rows[i].cells[0].getElementsByTagName("INPUT")[0];
   if(obj!=null)
   {
    obj.checked = oCheckbox.checked;
    }
   }   
  } 
    function Check(oCheckbox,id) //反选函数 oCheckbox一般为this id为GridView控件ID名
  {
   var GridView2 = document.getElementById(id); 
   for(i = 0;i < GridView2.rows.length; i++)
   {
      obj= GridView2.rows[i].cells[0].getElementsByTagName("INPUT")[0];
   if(obj!=null)
   {
    obj.checked = (!GridView2.rows[i].cells[0].getElementsByTagName("INPUT")[0].checked);
    }   
   } 
  }  
    function checkSel(t,id) //额外赠送对选择要操作的记录确认提示 t为操作字符 id为GridView控件ID名
  {
    var checked =-1;
    var GridView2 = document.getElementById(id);
    for(i = 0;i < GridView2.rows.length; i++)
   {
    obj= GridView2.rows[i].cells[0].getElementsByTagName("INPUT")[0];
    if(obj !=null)
    {
       if(obj.checked )
       {
            checked =i;
       }
    }
   }  
   if(checked > -1)
   {
        var msg = '确定要'+t+'吗?';
        if (confirm(msg)==true)
        {
            return true;
        }
        else
        {
            return false;
        }      
   }
   else
   {   
        alert('请先选择要'+t+'的记录!');
        return false;
   }
   }

使用范例:

                    <table border="0" cellpadding="0" cellspacing="0" style="width: 409px">
                        <tr>
                            <td align="left" colspan="2">
                                <asp:CheckBox ID="CheckBox3" runat="server" onclick="CheckAll(this,'GV_partner')" Text="全部选中" />
                                <input class="ButtomBG50" onclick="Check(this,'GV_partner')" type="button" value="反选" />
                                <asp:Button ID="btn_lock" runat="server" CssClass="ButtomBG50" OnClick="lock_user"
                                    OnClientClick="return checkSel('锁定','GV_partner')" Text="锁定" /> <asp:Button ID="btn_unlock"
                                        runat="server" CssClass="ButtomBG50" OnClick="lock_user" OnClientClick="return checkSel('解锁','GV_partner');"
                                        Text="解锁" /> <asp:Button ID="btn_edit" runat="server" CssClass="ButtomBG50" OnClick="btn_edit_Click"
                                    OnClientClick="return checkSel('修改','GV_partner');" Text="修改" /> <asp:Button ID="btn_del"
                                        runat="server" CssClass="ButtomBG50" OnClick="btn_del_Click" OnClientClick="return checkSel('删除','GV_partner');"
                                        Text="删除" /></td>
                        </tr>
                    </table>

Permalink | Comments (0) | Hits: 795 | Time: 9:06:10
Microsoft JET Database Engine 错误 '80004005'
js操作ListBox
All Comments

 No Data Now...

Post Your Comment
^ ^

Top