我有两个在运行时在网页Page_Load事件中填充的列表框。我正在使用Page.IsPostBack来确保列表仅在不回发时填充。
列表框A有大约150个项目,列表框B是空的。我有两个按钮,添加和删除。我在列表框A中选择项目,然后按添加按钮,这些项目将移动到列表框B。
我在列表框B中选择这些项时遇到问题。如果我将Autopostback设置为TRUE,则无法选择任何项目。当我选择一个项目时,即使我将Enableviewstate设置为TRUE,也会发生回发并清除我的选择,就像没有选择任何项目一样。
如果我将Autopostback设置为FALSE,我可以毫无问题地选择Items,但是当我在服务器端检查这些Items的Selected属性时,它们都是FALSE。
无论设置了什么样的autopostback,我都可以看到服务器端的已填充项目,只有selected属性始终为false。
所有列表框项目及其值都是唯一的。
有关解决此问题的任何建议吗?
以下是我在“添加”按钮的点击事件中填充列表框b的代码:
For i = 0 To (ListboxA.Items.Count - 1)
If ListboxA.Items.Item(i).Selected = True Then
ListboxB.Items.Add(ListboxA.Items.Item(i))
End If
Next
For i = 0 To (ListboxB.Items.Count - 1)
If ListboxA.Items.Contains(ListboxB.Items.Item(i)) Then
ListboxA.Items.Remove(ListboxB.Items.Item(i))
End If
ListboxB.Items.Item(i).Selected = False
Next
和列表框:
<asp:ListBox ID="ListboxA" runat="server" SelectionMode="Multiple" AutoPostBack="True"></asp:ListBox>
<asp:ListBox ID="ListboxB" runat="server" SelectionMode="Multiple" AutoPostBack="True"></asp:ListBox>
答案 0 :(得分:0)
必须进行选择,因为您在每次回发时都在执行listbox.databind()。 只有当它没有回发并且你的选择在回发后仍然存在时才会这样做。