将 ListItems 添加到会话
Adding ListItems to Session
Stackflow 上有关于如何将 ListBox 项目添加到会话,然后将项目重新填充回 ListBox 的示例,但由于某种原因它不起作用。
这是代码片段
Private Sub btnSelect_Click(sender As Object, e As EventArgs) Handles btnSelect.Click
If lstFields.SelectedIndex >= 0 Then
For i As Integer = 0 To lstFields.Items.Count - 1
If lstFields.Items(i).Selected Then
If Not arrayFields.Contains(lstFields.Items(i)) Then
arrayFields.Add(lstFields.Items(i))
Session("items") = arrayFields
End If
End If
Next
For i As Integer = 0 To arrayFields.Count - 1
If Not lstSelected.Items.Contains((CType(arrayFields(i), ListItem))) Then
lstSelected.Items.Add((CType(arrayFields(i), ListItem)))
End If
lstFields.Items.Remove((CType(arrayFields(i), ListItem)))
Next
lstSelected.SelectedIndex = -1
End Sub
当我尝试使用 For Each 循环将项目重新填充回 ListBox 时,我在使用 VS 2015 时不断遇到的错误显示:
'System.InvalidCastException' 类型的异常发生在 FocusVB.dll 中,但未在用户代码中处理
附加信息:无法将类型 'System.Web.UI.WebControls.ListBox' 的对象转换为类型 'System.Collections.IEnumerable'。
这是 for each 循环的片段:
For Each item As ListItem In Session("item")
lstSelected.Items.Add(New ListItem(item.Text, item.Value))
Next
我是不是遗漏了代码中的某处?
只需从 For each item as listitem
行删除 ListItem
..
For Each item In Session("item")
lstSelected.Items.Add(新建列表项(item.Text, item.Value))
下一个
不要问我为什么,而是阅读this。看看它的命名空间,它会回答你(如果你不是在谈论System.Windows.Documents.listItem
)
您的枚举列表包含 Session("items") = arrayFields
但是,您的引用是项目,而不是项目。更改项目。
If Not Session("items") Is Nothing Then
For Each item As ListItem In Session("items")
lstSelected.Items.Add(New ListItem(item.Text, item.Value))
Next
End If
Stackflow 上有关于如何将 ListBox 项目添加到会话,然后将项目重新填充回 ListBox 的示例,但由于某种原因它不起作用。
这是代码片段
Private Sub btnSelect_Click(sender As Object, e As EventArgs) Handles btnSelect.Click
If lstFields.SelectedIndex >= 0 Then
For i As Integer = 0 To lstFields.Items.Count - 1
If lstFields.Items(i).Selected Then
If Not arrayFields.Contains(lstFields.Items(i)) Then
arrayFields.Add(lstFields.Items(i))
Session("items") = arrayFields
End If
End If
Next
For i As Integer = 0 To arrayFields.Count - 1
If Not lstSelected.Items.Contains((CType(arrayFields(i), ListItem))) Then
lstSelected.Items.Add((CType(arrayFields(i), ListItem)))
End If
lstFields.Items.Remove((CType(arrayFields(i), ListItem)))
Next
lstSelected.SelectedIndex = -1
End Sub
当我尝试使用 For Each 循环将项目重新填充回 ListBox 时,我在使用 VS 2015 时不断遇到的错误显示:
'System.InvalidCastException' 类型的异常发生在 FocusVB.dll 中,但未在用户代码中处理
附加信息:无法将类型 'System.Web.UI.WebControls.ListBox' 的对象转换为类型 'System.Collections.IEnumerable'。
这是 for each 循环的片段:
For Each item As ListItem In Session("item")
lstSelected.Items.Add(New ListItem(item.Text, item.Value))
Next
我是不是遗漏了代码中的某处?
只需从 For each item as listitem
行删除 ListItem
..
For Each item In Session("item")
lstSelected.Items.Add(新建列表项(item.Text, item.Value)) 下一个
不要问我为什么,而是阅读this。看看它的命名空间,它会回答你(如果你不是在谈论System.Windows.Documents.listItem
)
您的枚举列表包含 Session("items") = arrayFields
但是,您的引用是项目,而不是项目。更改项目。
If Not Session("items") Is Nothing Then
For Each item As ListItem In Session("items")
lstSelected.Items.Add(New ListItem(item.Text, item.Value))
Next
End If