0

私は、インフラジスティックスで構築されたカスタム 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
4

1 に答える 1

1
Public Sub Check_Clicked(sender As Object, e As EventArgs)
    Dim loadnumbers As String = ""
    Dim data As List(Of String) = loadnumbers.Split(",").ToList()
    Dim myList As List(Of String) = DirectCast(Session("data"), List(Of String))
    'Const comma As Char = (",")
    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 = CType(GetGridCell(row, "lgh_number").Value, Integer)
                    If Not myList.Contains(loadnumbers) Then
                        myList.Add(loadnumbers)
                    End If
                ElseIf (myCheckBox.Checked = False) Then
                    loadnumbers = CType(GetGridCell(row, "lgh_number").Value, Integer)
                    If myList.Contains(loadnumbers) Then
                        myList.Remove(loadnumbers)
                    End If
                End If
            Next
            Session.Add("data", myList)
        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 = CType(GetGridCell(row, "lgh_number").Value, Integer)
                    data.Add(loadnumbers)
                End If
            Next
            Session("data") = data
        End If
    Catch ex As Exception
        Master.ShowMsg("", Message.Type.Error)
    End Try
End Sub
于 2013-09-23T03:24:48.503 に答える