2012-12-23 61 views
1

删除列表框的项目我有一个在运行时在网页的Page_Load事件填入两个ListBox。我使用Page.IsPostBack来确保列表仅在不是回发时才被填充。添加和在运行时

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

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

如果我设定的AutoPostBack为FALSE,我可以选择的项目没有任何问题,但是当我检查服务器端,这些项目的选定性质,他们全是假的。

不管自动回设定为,我可以看到在服务器端的填充项目,只有被选中的属性始终为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

显示代码,请 – YardenST

+0

@YardenST我已经编辑我的帖子,包括代码 – Rahmatizadeh

回答

0

选择必须去,因为你正在做的列表框。 databind()在每个回发。 只有当它不是回发和你的选择将保留甚至后回传。

+0

我没有做数据绑定在回发。正如我在我的问题中提到的,我正在检查Page.IsPostBack以确保这不会发生 – Rahmatizadeh

+0

我明白了。问题是“列表框在运行时创建”。 而且,无论何时在运行时创建控件,都必须手动处理回发数据。 –

+0

只需重写页面的loadviewstate和saveviewstate方法即可。 在保存视图状态方法中,将选定的索引保存到视图状态。在loadViewstate方法中,加载值并应用于列表框。 :) –