2013-09-21 25 views
0

我正在使用infragistics構建的自定義Webgrid。我可以遍歷行以進入複選框,並將作爲檢查值的框存儲到會話中。複選框保存在跨多頁的會話中的值

這就是現在發生的事情。 在任何頁面上,我點擊四個複選框將狀態更改爲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 
+0

修改你的代碼,你把會議(「數據」),有時爲字符串,其他時間列表 - 而且是個體值的列表。 –

+0

確定已修改,我將Dim val As String = Session(「data」)刪除 Dim arrVal As String()= val.Split(「,」) 對於每個s作爲字符串在arrVal中 If Not data.Contains(s)然後 data.Add(S) 結束如果 會議( 「數據」)=數據 接下來切換到這一點,如果不data.Contains(loadnumbers)然後 data.Add(loadnumbers) 結束如果 – user2792158

+0

我解決我的代碼和更改所以Session是一個列表。謝謝解決問題,我會發布新的代碼。如果需要進行任何更改以改進它,請告訴我。 – user2792158

回答

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 
相關問題