gridview实现服务器端和客户端全选的两种方法分享

  

复制代码 代码如下:

  <%@ Page Language="C#" AutoEventWireup="true"%>

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <script runat="server">

  // 计算数据,完全可以从数据看取得

  ICollection CreateDataSource()

  {

  System.Data.DataTable dt =new System.Data.DataTable();

  System.Data.DataRow dr;

  dt.Columns.Add(new System.Data.DataColumn("序号", typeof(System.String)));

  dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));

  dt.Columns.Add(new System.Data.DataColumn("语文", typeof(System.Decimal)));

  dt.Columns.Add(new System.Data.DataColumn("数学", typeof(System.Decimal)));

  dt.Columns.Add(new System.Data.DataColumn("英语", typeof(System.Decimal)));

  dt.Columns.Add(new System.Data.DataColumn("计算机", typeof(System.Decimal)));

  for (int i =0; i <8; i++)

  {

  System.Random rd =new System.Random(Environment.TickCount * i); ;

  dr = dt.NewRow();

  dr[0] = i.ToString();

  dr[1] ="【孟子】"+ i.ToString();

  dr[2] = System.Math.Round(rd.NextDouble() *100, 2);

  dr[3] = System.Math.Round(rd.NextDouble() *100, 2);

  dr[4] = System.Math.Round(rd.NextDouble() *100, 2);

  dr[5] = System.Math.Round(rd.NextDouble() *100, 2);

  dt.Rows.Add(dr);

  }

  System.Data.DataView dv =new System.Data.DataView(dt);

  return dv;

  }

  protected void Page_Load(object sender, EventArgs e)

  {

  if (!IsPostBack)

  {

  GridView2.DataSource = GridView1.DataSource = CreateDataSource();

  GridView2.DataBind();

  GridView1.DataBind();

  }

  }

  protected void Button1_Click(object sender, EventArgs e)

  {

  Ret1.Text ="";

  foreach (GridViewRow gvr in GridView1.Rows)

  {

  CheckBox ch = (CheckBox)gvr.FindControl("ItemCheckBox");

  if (ch.Checked)

  {

  Ret1.Text +="<li>GridView1 您选择的是(键值):"+ GridView1.DataKeys[gvr.DataItemIndex].Value.ToString();

  }

  }

  }

  protected void Button2_Click(object sender, EventArgs e)

  {

  Ret2.Text ="";

  foreach (GridViewRow gvr in GridView2.Rows)

  {

  CheckBox ch = (CheckBox)gvr.FindControl("ItemCheckBox");

  if (ch.Checked)

  {

  Ret2.Text +="<li>GridView2 您选择的是(键值):"+ GridView2.DataKeys[gvr.DataItemIndex].Value.ToString();

  }

  }

  }

  protected void CheckAll(object sender, EventArgs e)

  {

  CheckBox cbx = (CheckBox)sender;

  foreach (GridViewRow gvr in GridView1.Rows)

  {

  CheckBox ch = (CheckBox)gvr.FindControl("ItemCheckBox");

  ch.Checked = cbx.Checked;

  }

  }

  </script>

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>GridView 实现服务器端和客户端全选的两种方法</title>

  <script type="text/javascript">

  //<![CDATA[

  function CheckAll(oCheckbox)

  {

  var GridView2 = document.getElementById("<%=GridView2.ClientID %>");

  for(i =1;i < GridView2.rows.length; i++)

  {

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

  }

  }

  //]]>

  </script>

  </head>

  <body>

  <form id="Form1" runat="server">

  <table style="width:800px;font-size:12px;">

  <tr valign="top">

  <td>

  <asp:GridView ID="GridView1" runat="server" Font-Size="12px" BackColor="#FFFFFF"

  GridLines="Both" CellPadding="4" DataKeyNames="序号" AutoGenerateColumns="false">

  <HeaderStyle BackColor="#EDEDED" Height="26px"/>

  <Columns>

  <asp:TemplateField>

  <HeaderTemplate>

  <asp:CheckBox ID="CheckBox1" runat="server" Text="全选" AutoPostBack="true" OnCheckedChanged="CheckAll"/>

  </HeaderTemplate>

  <ItemTemplate>

  <asp:CheckBox ID="ItemCheckBox" runat="server"/>

  </ItemTemplate>

  </asp:TemplateField>

  <asp:BoundField DataField="学生姓名" HeaderText="学生姓名"/>

  <asp:BoundField DataField="语文" HeaderText="语文"/>

  <asp:BoundField DataField="数学" HeaderText="数学"/>

  <asp:BoundField DataField="英语" HeaderText="英语"/>

  <asp:BoundField DataField="计算机" HeaderText="计算机"/>

  </Columns>

  </asp:GridView>

  <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="得到选择的行值"/>

  </td>

  <td align="right">

  <asp:GridView ID="GridView2" runat="server" Font-Size="12px" BackColor="#FFFFFF"

  GridLines="Both" CellPadding="4" DataKeyNames="序号" AutoGenerateColumns="false">

  <HeaderStyle BackColor="#EDEDED" Height="26px"/>

  <Columns>

  <asp:TemplateField>

  <HeaderTemplate>

  <input id="Checkbox2" type="checkbox" onclick="CheckAll(this)" runat="server"/><label>全选</label>

  </HeaderTemplate>

  <ItemTemplate>

  <asp:CheckBox ID="ItemCheckBox" runat="server"/>

  </ItemTemplate>

  </asp:TemplateField>

  <asp:BoundField DataField="学生姓名" HeaderText="学生姓名"/>

  <asp:BoundField DataField="语文" HeaderText="语文"/>

  <asp:BoundField DataField="数学" HeaderText="数学"/>

  <asp:BoundField DataField="英语" HeaderText="英语"/>

  <asp:BoundField DataField="计算机" HeaderText="计算机"/>

  </Columns>

  </asp:GridView>

  <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="得到选择的行值"/>

  </td>

  </tr>

  <tr valign="top">

  <td>

  <asp:Literal ID="Ret1" runat="server"></asp:Literal>

  </td>

  <td align="right">

  <asp:Literal ID="Ret2" runat="server"></asp:Literal>

  </td>

  </tr>

  </table>

  </form>

  </body>

  </html>