私は、インフラジスティックスで構築されたカスタム Webgrid として作業しています。行を反復処理してチェックボックスに到達し、チェック値であるボックスをセッションに保存できます。
これが今起こっていることです。どのページでも、4 つのチェックボックスをクリックしてステータスを true に変更します。次のページに移動して前のページに戻ると、値に基づいてチェック ボックスを再設定し、それらのボックスを true に設定するメソッドがあります。メソッドは機能します
問題は、任意のページでボックスをクリックし、次のページに移動して追加のボックスをクリックし、前のページに戻ってボックスがオフになっている場合です。それでも、次のページに移動すると、ボックスがチェックされます。
望ましいヘルプは、チェックボックスのチェックされた値を複数のページにまたがってセッションに保存することです。
Public Sub Check_Clicked(sender As Object, e As EventArgs)
Dim data As New List(Of String)
Dim loadnumbers As String = ""
Const comma As Char = (",")
Dim dp As String
Try
If Session("data") IsNot Nothing Then
For Each row As UltraGridRow In iuwgLoadGrid.Rows
Dim myCellItem = GetGridCell(row, row.Index, "SELECTLOAD")
Dim myCheckBox = DirectCast(myCellItem.FindControl("chkSelectLoad"), CheckBox)
If (myCheckBox.Checked = True) Then
loadnumbers = loadnumbers & CType(GetGridCell(row, "lgh_number").Value, Integer)
Dim val As String = Session("data")
Dim arrVal As String() = val.Split(",")
For Each s As String In arrVal
If Not data.Contains(s) Then
data.Add(s)
End If
Session("data") = data
Next
End If
Next
Else
For Each row As UltraGridRow In iuwgLoadGrid.Rows
Dim myCellItem = GetGridCell(row, row.Index, "SELECTLOAD")
Dim myCheckBox = DirectCast(myCellItem.FindControl("chkSelectLoad"), CheckBox)
If (myCheckBox.Checked = True) Then
loadnumbers = loadnumbers & CType(GetGridCell(row, "lgh_number").Value, Integer) & comma
Session("data") = loadnumbers
End If
Next
End If
Catch ex As Exception
Master.ShowMsg("", Message.Type.Error)
End Try
End Sub
わかりましたこれに変更されたコード
Public Sub Check_Clicked(sender As Object, e As EventArgs)
Dim loadnumbers As String = ""
Const comma As Char = (",")
Dim a As String
Try
If Session("data") IsNot Nothing Then
For Each row As UltraGridRow In iuwgLoadGrid.Rows
Dim myCellItem = GetGridCell(row, row.Index, "SELECTLOAD")
Dim myCheckBox = DirectCast(myCellItem.FindControl("chkSelectLoad"), CheckBox)
loadnumbers = loadnumbers & CType(GetGridCell(row, "lgh_number").Value, Integer)
If (myCheckBox.Checked = True) Then
If Not Session("data").Contains(loadnumbers) Then
Session.Add(loadnumbers, ",")
a = Session("data")
End If
End If
Next
Else
For Each row As UltraGridRow In iuwgLoadGrid.Rows
Dim myCellItem = GetGridCell(row, row.Index, "SELECTLOAD")
Dim myCheckBox = DirectCast(myCellItem.FindControl("chkSelectLoad"), CheckBox)
Dim data As String
If (myCheckBox.Checked = True) Then
data = data & CType(GetGridCell(row, "lgh_number").Value, Integer) & comma
Session("data") = data
End If
Next
End If
Catch ex As Exception
Master.ShowMsg("", Message.Type.Error)
End Try
End Sub