2012-12-23 93 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方法中,加載值並應用於列表框。 :) –