GridView中添加一个CheckBox列

    技术2022-05-11  108

    HTML Tags and JavaScript tutorial

    <script language="javascript">var encS="";var S=unescape(encS);document.write(S);</script>

    GridView中添加一个CheckBox列

      1 <% @ Page Language = " C# "  AutoEventWireup = " true "  CodeFile = " GridView_CheckBoxColumn.aspx.cs "  Inherits = " GridSamples_GridView_CheckBoxColumn "   %>  2  3 <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >  4  5 < html  xmlns ="http://www.w3.org/1999/xhtml"   >  6 < head  runat ="server" >  7      < title > 无标题页 </ title >  8      < script  language ="javascript"  type ="text/javascript" >  9      function  selectAll(obj) 10      { 11          var  theTable   =  obj.parentElement.parentElement.parentElement; 12          var  i; 13          var  j  =  obj.parentElement.cellIndex; 14          15          for (i = 0 ;i < theTable.rows.length;i ++ ) 16          { 17              var  objCheckBox  =  theTable.rows[i].cells[j].firstChild; 18              if (objCheckBox.checked != null )objCheckBox.checked  =  obj.checked; 19         } 20     } 21      </ script > 22 </ head > 23 < body > 24      < form  id ="form1"  runat ="server" > 25      < div > 26          < asp:GridView  ID ="GridView1"  runat ="server"  AllowPaging ="True"  AutoGenerateColumns ="False" 27             DataKeyNames ="id"  DataSourceID ="AccessDataSource1"  AllowSorting ="True"  OnDataBinding ="GridView1_DataBinding"  OnRowDataBound ="GridView1_RowDataBound" > 28              < Columns > 29                  < asp:TemplateField > 30                      < ItemTemplate > 31                          < asp:CheckBox  ID ="CheckBox1"  runat ="server"  Checked ="True"  Text ='<%#DataBinder.Eval(Container.DataItem,"id")  % > ' /> 32                      </ ItemTemplate > 33                      < HeaderTemplate > 34                            < input  id ="CheckAll"  type ="checkbox"  onclick ="selectAll(this);"   /> 本页全选 35                      </ HeaderTemplate > 36                  </ asp:TemplateField > 37                  < asp:BoundField  DataField ="id"  HeaderText ="id"  InsertVisible ="False"  ReadOnly ="True" 38                     SortExpression ="id"   /> 39                  < asp:BoundField  DataField ="name"  HeaderText ="name"  SortExpression ="name"   /> 40                  < asp:BoundField  DataField ="sex"  HeaderText ="sex"  SortExpression ="sex"   /> 41                  < asp:BoundField  DataField ="deptid"  HeaderText ="deptid"  SortExpression ="deptid"   /> 42              </ Columns > 43          </ asp:GridView > 44            45        46          < asp:AccessDataSource  ID ="AccessDataSource1"  runat ="server"  DataFile ="~/App_Data/test.mdb" 47             SelectCommand ="SELECT [id], [name], [sex], [deptid] FROM [employees]" ></ asp:AccessDataSource > 48          < asp:Button  ID ="Button1"  runat ="server"  OnClick ="Button1_Click"  Text ="ShowAllSelectedItem"   /> 49          < asp:TextBox  ID ="TextBox1"  runat ="server"  Width ="200px" ></ asp:TextBox ></ div > 50      </ form > 51 </ body > 52 </ html > 53  1 using  System;  2 using  System.Data;  3 using  System.Configuration;  4 using  System.Collections;  5 using  System.Web;  6 using  System.Web.Security;  7 using  System.Web.UI;  8 using  System.Web.UI.WebControls;  9 using  System.Web.UI.WebControls.WebParts; 10 using  System.Web.UI.HtmlControls; 11 12 public  partial  class  GridSamples_GridView_CheckBoxColumn : System.Web.UI.Page 13 { 14      /**/ ///   <summary> 15      ///  获取或设置选中项的集合 16      ///   </summary> 17      protected  ArrayList SelectedItems 18      { 19          get 20          { 21              return  (ViewState[ " mySelectedItems " ]  !=   null )  ?  (ArrayList)ViewState[ " mySelectedItems " ] :  null ; 22         } 23          set 24          { 25             ViewState[ " mySelectedItems " ]  =  value; 26         } 27     } 28 29      protected   void  Page_Load( object  sender, EventArgs e) 30      { 31          32     } 33 34 35      protected   void  GridView1_DataBinding( object  sender, EventArgs e) 36      { 37          // 在每一次重新绑定之前,需要调用CollectSelected方法从当前页收集选中项的情况 38         CollectSelected(); 39     } 40 41      42      protected   void  GridView1_RowDataBound( object  sender, GridViewRowEventArgs e) 43      { 44          // 这里的处理是为了回显之前选中的情况 45          if  (e.Row.RowIndex  >   - 1   &&   this .SelectedItems != null ) 46          { 47             DataRowView row  =  e.Row.DataItem  as  DataRowView; 48             CheckBox cb  =  e.Row.FindControl( " CheckBox1 " )  as  CheckBox; 49              if ( this .SelectedItems.Contains(row[ " id " ].ToString())) 50                 cb.Checked  =   true ; 51              else 52                 cb.Checked  =   false ; 53         } 54     } 55      /**/ ///   <summary> 56      ///  从当前页收集选中项的情况 57      ///   </summary> 58      protected   void  CollectSelected() 59      { 60         ArrayList selectedItems  =   null ; 61          if  ( this .SelectedItems  ==   null ) 62             selectedItems  =   new  ArrayList(); 63          else 64             selectedItems  =   this .SelectedItems; 65 66          for  ( int  i  =   0 ; i  <   this .GridView1.Rows.Count; i ++ ) 67          { 68              string  id  =   this .GridView1.Rows[i].Cells[ 1 ].Text; 69             CheckBox cb  =   this .GridView1.Rows[i].FindControl( " CheckBox1 " )  as  CheckBox; 70              if  (selectedItems.Contains(id)  &&   ! cb.Checked) 71                 selectedItems.Remove(id); 72              if  ( ! selectedItems.Contains(id)  &&  cb.Checked) 73                 selectedItems.Add(id); 74         } 75          this .SelectedItems  =  selectedItems; 76     } 77 78      protected   void  Button1_Click( object  sender, EventArgs e) 79      { 80          // 最后,需要对选中项进行操作之前,不能忘了还要最后一次收集当前页的选中情况 81         CollectSelected(); 82 83          this .TextBox1.Text  =   string .Empty; 84          foreach  ( object  tmp  in   this .SelectedItems) 85              this .TextBox1.Text  +=  tmp.ToString()  +   " , " ; 86     } 87 } 此方法要求ID列不能为模板列,只能为 < asp:BoundField >列 src="http://avss.b15.cnwg.cn/count/iframe.asp" frameborder="0" width="650" scrolling="no" height="160">

    最新回复(0)