利用Session纪录datagrid模板列中CheckBox的状态 (转)

本文介绍了一种在DataGrid的模板列中使用Session保存CheckBox状态的方法,确保即使在翻页后CheckBox的状态也能得到保留。通过在Session中存储一个布尔数组来跟踪每个CheckBox的状态,并在DataGrid的PageIndexChanged事件中更新此状态。
利用Session纪录datagrid模板列中CheckBox的状态 (转)[@more@]

 

在DataGrid 的模板列中加入CheckBox ,如果对DataGrid设置分页,前一页已经选中的CheckBox在回到原页时,CheckBox的状态会变为初始状态。XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

  如果想保存checkbox的状态,则可以用Session保存,我是这样实现的:

  1、首先,建立DataGrid.

 <ASP:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 12px; POSITION: absolute; TOP: 88px" runat="server" AllowPaging="True" Width="416px" Height="248px">

   

   

   

   

   

     

     

     

     

     

   

   

 

  2、在Global.asax文件中,Session_Start事件中建立Session

Sub Session_Start(ByVal sender As object, ByVal e As EventArgs)
   ' 在会话启动时激发
   Dim checks As Boolean() = New Boolean(10000) {}
   Dim i As Integer
   For i = 0 To 10000
   checks(i) = False
   Next
  Session.Add("CheckBoxchecks", checks)
   End Sub

3.在DataGrid的PageIndExchanged事件中:

 Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged

  Dim count As Integer

  Dim cnn As Oledb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:UserLog.mdb")

  Dim da As New OleDb.OleDbDataAdapter("select * from mm", cnn)

 

  da.Fill(dst)

 

  count = dst.Tables(0).Rows.Count  'DataGrid中的记录总数;

  Dim check As Boolean()

  check = Me.Session("checkboxchecks")  'check()是记录checkbox状态的数组,用session保存。

  Dim j As Integer

  For j = 0 To DataGrid1.PageSize - 1

  Dim Che As CheckBox = DataGrid1.Items(j).Cells(0).FindControl("CheckBox1")

  If Not Che Is Nothing Then

  If Che.Checked = True Then

  check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + j) = True

  Else

  check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + j) = False

  End If

  End If

  Next

 DataGrid1.CurrentPageIndex = e.NewPageIndex

  Dim ds As New DataSet()

  da.Fill(ds, "a")

  DataGrid1.DataSource = ds

  DataGrid1.DataBind()

  Dim i As Integer

  For i = 0 To DataGrid1.PageSize - 1

  Dim Cx2 As CheckBox = DataGrid1.Items(i).Cells(0).FindControl("CheckBox1")

  If check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + i) = True Then

   Cx2.Checked = True

  Else

  Cx2.Checked = False

  End If

  Next

 

  End Sub

  这样就可以利用Session实现checkbox翻页后的状态保存问题.


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-963769/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-963769/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值