在运行时添加和删除列表框项

时间:2012-12-23 21:15:34

标签: asp.net vb.net listbox

我有两个在运行时在网页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>

1 个答案:

答案 0 :(得分:0)

必须进行选择,因为您在每次回发时都在执行listbox.databind()。 只有当它没有回发并且你的选择在回发后仍然存在时才会这样做。