1

我有两个列表框,它们在运行时在网页 Page_Load 事件中填充。我正在使用 Page.IsPostBack 来确保仅在未回发时填充列表。

列表框 A 大约有 150 个项目,列表框 B 为空。我有两个按钮,添加和删除。我选择列表框 A 中的项目并按添加按钮,这些项目将移动到列表框 B。

我在列表框 B 中选择这些项目时遇到问题。如果我将 Autopostback 设置为 TRUE,我将无法选择任何项目。当我选择一个项目时,会发生回发并且我的选择被清除,就好像没有选择任何项目一样,即使我将 Enableviewstate 设置为 TRUE。

如果我将 Autopostback 设置为 FALSE,我可以毫无问题地选择项目,但是当我在服务器端检查这些项目的 Selected 属性时,它们都是 FALSE。

无论自动回发设置为什么,我都可以在服务器端看到填充的项目,只有 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>
4

1 回答 1

0

选择必须进行,因为您在每次回发时都在执行 listbox.databind() 。仅当它不是回发时才这样做,并且即使在回发之后您的选择仍将保留。

于 2012-12-24T03:26:42.023 回答