2

私のasp.netプロジェクトでは、変更されたListboxコントロールを使用して、複数選択ドロップダウンボックスを表示します。これは、Select2();を使用して視覚的に提示します。

AutoPostBack="True" を設定して、すべてのアクションの後にコード ビハインドでオブジェクトを変更できるようにします。ただし、Select2 multple は<select>オプション自体を変更しないため、ViewState はアイテムを選択済みとして認識しません。

Select2() で項目を選択すると の対応する項目が変更される<option>場合<select>、ViewState は変更を取得し、ページをリロードするときに選択済みとしてマークするのではないかと思います。

Aspx ページ:

<cc1:MultiSelector ID="txtUsers" runat="server" CssClass="select" multiple="multiple"  OnSelectedIndexChanged="txtUsers_SelectedIndexChanged"></cc1:MultiSelector>

マルチセレクター コントロール:

public class MultiSelector : ListBox
{
    public IEnumerable SelectedItems
    {
        get
        {
            ListItemCollection items = this.Items as ListItemCollection;
            return this.Items.OfType().Where(item => item.Selected);
        }
    }
}

コードビハインド:

protected void txtUsers_SelectedIndexChanged(object sender, EventArgs e)
{
  // Do something with the selected items

}

対応する HTML 要素を選択済みとして設定する方法についてアドバイスしてください。

<option value='3' selected="selected">Item3</option>

また、既存のアイテムを削除しても機能しません。選択した属性が削除されないのと同じ理由である可能性が最も高いです。

4

1 に答える 1