web-dev-qa-db-ja.com

Asp.NET DropDownList SelectedItem.Valueが変更されない

マークアップ:

            <div style="float:left;margin-top:15px;width:80px">
                <asp:DropDownList ID="MyList" runat="server" Width="100px"></asp:DropDownList>
            </div>

コード:

        // clear vehicles list
        MyList.Items.Clear();

        // add 'all' option
        MyList.Items.Add(new ListItem("ALL", "0"));

        // add assets
        foreach (CustomClass item in items)
            MyList.Items.Add(new ListItem(item.Name, item.ID.ToString()));

SelectedIndexChangedは必要ないため、トリガーするイベントはありません。

ポストバックのボタンをクリックすると、selectedItemの値がDropDownListの最初の項目の値のままになります。何が欠けていますか?

[〜#〜] note [〜#〜]投稿の返信と編集を停止してください。既に回答済みですのでそのままとさせていただく場合がございます。

14
Bahamut

_Page_Load_でデータバインドしている場合は、基本的にSelectedItemもリセットしています。

_Page_Load_に存在するバインディングコードは、if(!IsPostBack)ブロック内にラップする必要があります。

_if(!Page.IsPostBack)
{

    // Your binding code here ...

}
_
42

コードはおそらくポストバック後にも実行されており、ボックスをクリアしているため、選択がすべて失われています。

もしそうなら、if( !Page.IsPostBack ) { ... }のようなものでコードをラップしてみてください。

4
Meligy

したがって、この答えは、最も一般的な原因に対する「明白な」解決策です。ただし、これを引き起こす可能性のあるもう1つの驚くべき問題があります!リストの値はデータベースからのもので、値には改行とキャリッジリターンが含まれています: "\ r\n"。これらの値は無害なスペースのように見えますが、実際にはそうではありません!私の解決策は、これらの隠されたChar値を削除することでした。それが役に立てば幸い。

0
Oliver Lundt