1

Web ページの Page_Load イベントで実行時に入力される 2 つのリストボックスがあります。私は Page.IsPostBack を使用して、ポストバックでない場合にのみリストが作成されるようにしています。

リストボックス A には約 150 個の項目があり、リストボックス B は空です。Add と Remove の 2 つのボタンがあります。リストボックス A の項目を選択して [追加] ボタンを押すと、それらの項目がリストボックス B に移動されます。

リストボックス B でこれらのアイテムを選択するのに問題があります。Autopostback を TRUE に設定すると、アイテムを選択できません。アイテムを 1 つ選択するとポストバックが発生し、Enableviewstate を TRUE に設定しても、アイテムが選択されていないかのように選択がクリアされます。

Autopostback を FALSE に設定すると、問題なくアイテムを選択できますが、サーバー側でこれらのアイテムの Selected プロパティを確認すると、すべて 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>
4

1 に答える 1

0

すべてのポストバックで listbox.databind() を実行しているため、選択が行われている必要があります。ポストバックではなく、ポストバック後も選択が残る場合にのみ実行してください。

于 2012-12-24T03:26:42.023 に答える