用session保存: Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged Dim bb 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)
bb = dst.Tables(0).Rows.Count 'DataGrid中的记录总数; Dim check As Boolean() check = Me.Session("g_checks") 'check()是记录checkbox状态的数组,用session保存。 If (DataGrid1.CurrentPageIndex < bb / DataGrid1.PageSize) Then Dim j As Integer For j = 0 To DataGrid1.PageSize - 1 Dim Cx As CheckBox = DataGrid1.Items(j).Cells(0).FindControl("CheckBox1") If Not Cx Is Nothing Then If Cx.Checked = True Then check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + j) = True Else check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + j) = False End If End If Next Else Dim i As Integer For i = 0 To bb Mod DataGrid1.PageSize Dim Cx1 As CheckBox = DataGrid1.Items(i).Cells(0).FindControl("CheckBox1") If (Cx1.Checked) Then check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + i) = True Else check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + i) = False End If Next End If DataGrid1.CurrentPageIndex = e.NewPageIndex Dim ds As New DataSet() da.Fill(ds, "a") DataGrid1.DataSource = ds DataGrid1.DataBind() If (DataGrid1.CurrentPageIndex < bb / DataGrid1.PageSize) Then 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 Else Dim i As Integer For i = 0 To bb Mod DataGrid1.PageSize - 1 Dim Cx3 As CheckBox = DataGrid1.Items(0).Cells(0).FindControl("CheckBox1") If (check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + i) = True) Then Cx3.Checked = True Else Cx3.Checked = False End If Next End If End Sub
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
Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
Dim bb 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)
bb = dst.Tables(0).Rows.Count 'DataGrid中的记录总数;
Dim check As Boolean()
check = Me.Session("g_checks") 'check()是记录checkbox状态的数组,用session保存。
If (DataGrid1.CurrentPageIndex < bb / DataGrid1.PageSize) Then
Dim j As Integer
For j = 0 To DataGrid1.PageSize - 1
Dim Cx As CheckBox = DataGrid1.Items(j).Cells(0).FindControl("CheckBox1")
If Not Cx Is Nothing Then
If Cx.Checked = True Then
check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + j) = True
Else
check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + j) = False
End If
End If
Next
Else
Dim i As Integer
For i = 0 To bb Mod DataGrid1.PageSize
Dim Cx1 As CheckBox = DataGrid1.Items(i).Cells(0).FindControl("CheckBox1")
If (Cx1.Checked) Then
check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + i) = True
Else
check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + i) = False
End If
Next
End If
DataGrid1.CurrentPageIndex = e.NewPageIndex
Dim ds As New DataSet()
da.Fill(ds, "a")
DataGrid1.DataSource = ds
DataGrid1.DataBind()
If (DataGrid1.CurrentPageIndex < bb / DataGrid1.PageSize) Then
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
Else
Dim i As Integer
For i = 0 To bb Mod DataGrid1.PageSize - 1
Dim Cx3 As CheckBox = DataGrid1.Items(0).Cells(0).FindControl("CheckBox1")
If (check(DataGrid1.CurrentPageIndex * DataGrid1.PageSize + i) = True) Then
Cx3.Checked = True
Else
Cx3.Checked = False
End If
Next End If
End Sub
' 在会话启动时激发
Dim checks As Boolean() = New Boolean(10000) {}
Dim i As Integer
For i = 0 To 10000
checks(i) = False
Next
Session.Add("g_checks", checks)
End Sub