Hiddenfield,checkbox用法

  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  namespace  sitemapdemo
 13  {
 14       ///   <summary>
 15       ///  涂聚文 Geovin Du
 16       ///  缔友计算机信息技术有限公司
 17       ///   </summary>
 18       public   partial   class  CheckBoxes : System.Web.UI.Page
 19      {
 20           ///   <summary>
 21           ///  
 22           ///   </summary>
 23           ///   <param name="sender"></param>
 24           ///   <param name="e"></param>
 25           protected   void  Page_Load( object  sender, EventArgs e)
 26          {
 27               if  ( ! Page.IsPostBack)
 28                  BindGridView();
 29          }
 30           ///   <summary>
 31           ///  
 32           ///   </summary>
 33           private   void  BindGridView()
 34          {
 35              gvCheckboxes.DataSource  =  GetDataSource();
 36              gvCheckboxes.DataBind();
 37          }
 38           ///   <summary>
 39           ///  
 40           ///   </summary>
 41           ///   <param name="sender"></param>
 42           ///   <param name="e"></param>
 43           protected   void  gvCheckboxes_PageIndexChanging( object  sender, GridViewPageEventArgs e)
 44          {
 45              gvCheckboxes.PageIndex  =  e.NewPageIndex;
 46              BindGridView();
 47          }
 48           ///   <summary>
 49           ///  
 50           ///   </summary>
 51           ///   <param name="sender"></param>
 52           ///   <param name="e"></param>
 53           protected   void  gvCheckboxes_RowDataBound( object  sender, GridViewRowEventArgs e)
 54          {
 55               if  (e.Row.RowType  ==  DataControlRowType.DataRow  &&  (e.Row.RowState  ==  DataControlRowState.Normal  ||  e.Row.RowState  ==  DataControlRowState.Alternate))
 56              {
 57                  CheckBox chkBxSelect  =  (CheckBox)e.Row.Cells[ 0 ].FindControl( " chkBxSelect " );
 58                   // 服务器端
 59                   // CheckBox chkBxSelect = (CheckBox)e.Row.Cells[0].FindControl("chkBxSelect");
 60                  HtmlInputCheckBox chkBxHeader  =  (HtmlInputCheckBox) this .gvCheckboxes.HeaderRow.FindControl( " chkBxHeader " );
 61                  HiddenField hdnFldId  =  (HiddenField)e.Row.Cells[ 0 ].FindControl( " hdnFldId " );
 62                   // onclick   <asp:CheckBox ID="chkBxHeader"  οnclick="javascript:HeaderClick(this);" runat="server" />
 63                  chkBxSelect.Attributes[ " onclick " =   string .Format( " javascript:ChildClick(this,document.getElementById('{0}'),'{1}'); " , chkBxHeader.ClientID, hdnFldId.Value.Trim());
 64              }
 65          }
 66           ///   <summary>
 67           ///  
 68           ///   </summary>
 69           ///   <returns></returns>
 70           private  DataTable GetDataSource()
 71          {
 72              DataTable dTable  =   new  DataTable();
 73 
 74              DataRow dRow  =   null ;
 75              DateTime dTime;
 76              Random rnd  =   new  Random();
 77 
 78              dTable.Columns.Add( " Id " , System.Type.GetType( " System.Int32 " ));
 79              dTable.Columns[ 0 ].AutoIncrement  =   true ;
 80              dTable.Columns.Add( " RandomNo " );
 81              dTable.Columns.Add( " Date " );
 82              dTable.Columns.Add( " Time " );
 83 
 84               for  ( int  n  =   0 ; n  <   25 ++ n)
 85              {
 86                  dRow  =  dTable.NewRow();
 87                  dTime  =  DateTime.Now;
 88 
 89                  dRow[ " RandomNo " =  rnd.NextDouble();
 90                  dRow[ " Date " =  dTime.ToString( " MM/dd/yyyy " );
 91                  dRow[ " Time " =  dTime.ToString( " hh:mm:ss tt " );
 92 
 93                  dTable.Rows.Add(dRow);
 94                  dTable.AcceptChanges();
 95              }
 96 
 97               return  dTable;
 98          }
 99           ///   <summary>
100           ///  
101           ///   </summary>
102           ///   <param name="sender"></param>
103           ///   <param name="e"></param>
104           protected   void  btnDelete_Click( object  sender, EventArgs e)
105          {
106               // Get Ids
107               string [] IDs  =  hdnFldSelectedValues.Value.Trim().Split( ' | ' );
108               int  k  =   0 ;
109               string  ds  =   string .Empty;
110               // Code for deleting items
111               foreach  ( string  Item  in  IDs)
112              {
113                   // Call appropiate method for deletion operation.
114                   if  (k  ==   0 )
115                  {
116                      ds  =  Item;
117                  }
118                   if  (k  !=   0 )
119                  {
120                      ds  +=   " , "   +  Item;
121                  }
122                  k ++ ;
123              }
124              Response.Write(ds);
125          }
126      }
127  }
  1        < script type = " text/javascript " >
  
  2           // Reference of the GridView. Geovin Du
  3          var TargetBaseControl  =   null ;
  4           // Total no of checkboxes in a particular column inside the GridView.
  5          var CheckBoxes;
  6           // Total no of checked checkboxes in a particular column inside the GridView.
  7          var CheckedCheckBoxes;
  8           // Array of selected item's Ids.
  9          var SelectedItems;
 10           // Hidden field that wil contain string of selected item's Ids separated by '|'.
 11          var SelectedValues;
 12          
 13          window.onload  =  function()
 14          {
 15               // Get reference of the GridView. 
 16               try
 17              {
 18                  TargetBaseControl  =  document.getElementById( ' <%= this.gvCheckboxes.ClientID %> ' );
 19              }
 20               catch (err)
 21              {
 22                  TargetBaseControl  =   null ;
 23              }
 24              
 25               // Get total no of checkboxes in a particular column inside the GridView.
 26               try
 27              {
 28                  CheckBoxes  =  parseInt( ' <%= this.gvCheckboxes.Rows.Count %> ' );
 29              }
 30               catch (err)
 31              {
 32                  CheckBoxes  =   0 ;
 33              }
 34              
 35               // Get total no of checked checkboxes in a particular column inside the GridView.
 36              CheckedCheckBoxes  =   0 ;
 37              
 38               // Get hidden field that wil contain string of selected item's Ids separated by '|'.
 39              SelectedValues  =  document.getElementById( ' <%= this.hdnFldSelectedValues.ClientID %> ' );
 40              
 41               // Get an array of selected item's Ids.
 42               if (SelectedValues.value  ==   '' )
 43                  SelectedItems  =   new  Array();
 44               else
 45                  SelectedItems  =  SelectedValues.value.split( ' | ' );
 46                  
 47               // Restore selected CheckBoxes' states.
 48               if (TargetBaseControl  !=   null )
 49                  RestoreState();
 50          }
 51          
 52          function HeaderClick(CheckBox)
 53          {            
 54               // Get all the control of the type INPUT in the base control.
 55              var Inputs  =  TargetBaseControl.getElementsByTagName( ' input ' );
 56              
 57               // Checked/Unchecked all the checkBoxes in side the GridView & modify selected items array.
 58               for (var n  =   0 ; n  <  Inputs.length;  ++ n)
 59                   if (Inputs[n].type  ==   ' checkbox '   &&  Inputs[n].id.indexOf( ' chkBxSelect ' , 0 >=   0 )
 60                  {
 61                      Inputs[n]. checked   =  CheckBox. checked ;
 62                       if (CheckBox. checked )
 63                          SelectedItems.push(document.getElementById(Inputs[n].id.replace( ' chkBxSelect ' , ' hdnFldId ' )).value);
 64                       else
 65                          DeleteItem(document.getElementById(Inputs[n].id.replace( ' chkBxSelect ' , ' hdnFldId ' )).value);
 66                  }
 67                          
 68               // Update Selected Values. 
 69              SelectedValues.value  =  SelectedItems.join( ' | ' );
 70                          
 71               // Reset Counter
 72              CheckedCheckBoxes  =  CheckBox. checked   ?  CheckBoxes :  0 ;
 73          }
 74          
 75          function ChildClick(CheckBox, HCheckBox, Id)
 76          {               
 77               // Modifiy Counter;            
 78               if (CheckBox. checked   &&  CheckedCheckBoxes  <  CheckBoxes)
 79                  CheckedCheckBoxes ++ ;
 80               else   if (CheckedCheckBoxes  >   0
 81                  CheckedCheckBoxes -- ;
 82                  
 83               // Change state of the header CheckBox.
 84               if (CheckedCheckBoxes  <  CheckBoxes)
 85                  HCheckBox. checked   =   false ;
 86               else   if (CheckedCheckBoxes  ==  CheckBoxes)
 87                  HCheckBox. checked   =   true ;
 88                  
 89               // Modify selected items array.
 90               if (CheckBox. checked )
 91                  SelectedItems.push(Id);
 92               else
 93                  DeleteItem(Id);
 94                  
 95               // Update Selected Values. 
 96              SelectedValues.value  =  SelectedItems.join( ' | ' );
 97          }   
 98          
 99          function RestoreState()
100          {
101               // Get all the control of the type INPUT in the base control.
102              var Inputs  =  TargetBaseControl.getElementsByTagName( ' input ' );
103              
104               // Header CheckBox
105              var HCheckBox  =   null ;
106              
107               // Restore previous state of the all checkBoxes in side the GridView.
108               for (var n  =   0 ; n  <  Inputs.length;  ++ n)
109                   if (Inputs[n].type  ==   ' checkbox '   &&  Inputs[n].id.indexOf( ' chkBxSelect ' , 0 >=   0 )
110                       if (IsItemExists(document.getElementById(Inputs[n].id.replace( ' chkBxSelect ' , ' hdnFldId ' )).value)  >   - 1 )
111                      {
112                          Inputs[n]. checked   =   true ;          
113                          CheckedCheckBoxes ++ ;      
114                      }
115                       else
116                          Inputs[n]. checked   =   false ;   
117                   else   if (Inputs[n].type  ==   ' checkbox '   &&  Inputs[n].id.indexOf( ' chkBxHeader ' , 0 >=   0 )    
118                      HCheckBox  =  Inputs[n];  
119                      
120               // Change state of the header CheckBox.
121               if (CheckedCheckBoxes  <  CheckBoxes)
122                  HCheckBox. checked   =   false ;
123               else   if (CheckedCheckBoxes  ==  CheckBoxes)
124                  HCheckBox. checked   =   true ;  
125          }
126          
127          function DeleteItem(Text)
128          {
129              var n  =  IsItemExists(Text);
130               if ( n  >   - 1 )
131                  SelectedItems.splice(n, 1 );
132          }
133          
134          function IsItemExists(Text)
135          {
136               for (var n  =   0 ; n  <  SelectedItems.length;  ++ n)
137                   if (SelectedItems[n]  ==  Text)
138                       return  n;
139                      
140               return   - 1 ;  
141          }     
142       </ script >
143  </ head >
144  < body >
145       < form id = " form1 "  runat = " server " >
146       < div >
147              < asp:GridView ID = " gvCheckboxes "  runat = " server "  AutoGenerateColumns = " False "  OnPageIndexChanging = " gvCheckboxes_PageIndexChanging "
148              OnRowDataBound = " gvCheckboxes_RowDataBound "  AllowPaging = " True " >
149               < Columns >
150                   < asp:TemplateField HeaderText = " Select " >
151                       < ItemTemplate >
152                           < asp:CheckBox ID = " chkBxSelect "  runat = " server "   />
153                           < asp:HiddenField ID = " hdnFldId "  runat = " server "  Value = ' <%# Eval("Id") %> '   />
154                       </ ItemTemplate >
155                       < HeaderStyle HorizontalAlign = " Center "  VerticalAlign = " Middle "  Width = " 50px "   />
156                       < ItemStyle HorizontalAlign = " Center "  VerticalAlign = " Middle "  Width = " 50px "   />
157                       < HeaderTemplate >
158                       < input type = " checkbox "  id = " chkBxHeader "  onclick = " javascript:HeaderClick(this); "  runat = " server "   />
159                         
160                       </ HeaderTemplate >
161                   </ asp:TemplateField >
162                   < asp:BoundField DataField = " RandomNo "  HeaderText = " Random Number " >
163                       < HeaderStyle HorizontalAlign = " Center "  VerticalAlign = " Middle "  Width = " 150px "   />
164                       < ItemStyle HorizontalAlign = " Center "  VerticalAlign = " Middle "  Width = " 150px "   />
165                   </ asp:BoundField >
166                   < asp:BoundField DataField = " Date "  HeaderText = " Date " >
167                       < HeaderStyle HorizontalAlign = " Center "  VerticalAlign = " Middle "  Width = " 75px "   />
168                       < ItemStyle HorizontalAlign = " Center "  VerticalAlign = " Middle "  Width = " 75px "   />
169                   </ asp:BoundField >
170                   < asp:BoundField DataField = " Time "  HeaderText = " Time " >
171                       < HeaderStyle HorizontalAlign = " Center "  VerticalAlign = " Middle "  Width = " 100px "   />
172                       < ItemStyle HorizontalAlign = " Center "  VerticalAlign = " Middle "  Width = " 100px "   />
173                   </ asp:BoundField >
174               </ Columns >
175               < RowStyle BackColor = " Moccasin "   />
176               < AlternatingRowStyle BackColor = " NavajoWhite "   />
177               < HeaderStyle BackColor = " DarkOrange "  Font - Bold = " True "  ForeColor = " White "   />
178           </ asp:GridView >
179           < asp:HiddenField ID = " hdnFldSelectedValues "  runat = " server "   />
180           < asp:Button ID = " btnDelete "  runat = " server "  OnClick = " btnDelete_Click "  Text = " DELETE "   />
181           </ div >
182      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值