17

マークアップ:

            <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のイベントトリガーはありません。

ポストバックのボタンをクリックすると、選択したアイテムの値がDropDownListの最初のアイテムの値のままになります。私は何が欠けていますか?

投稿への返信や編集は停止してください。すでに回答済みですので、そのままにしておく場合があります。

4

5 に答える 5

48

でデータバインディングを実行している場合はPage_Load、基本的にSelectedItemもリセットしています。

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

if(!Page.IsPostBack)
{

    // Your binding code here ...

}
于 2012-04-27T03:57:34.130 に答える
4

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

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

于 2012-04-27T03:55:37.007 に答える
0

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

于 2015-04-01T04:04:21.083 に答える
-1

はい、ドロップダウンリストAutopostback=trueを追加する必要がありません。

.aspxページでフォローしてみてください

于 2012-04-27T03:57:01.763 に答える
-1

追加する必要のないすべてを追加する最初のインデックスです。特定のインデックス番号に挿入する必要があります

MyList.Items.Insert(0, "ALL");
于 2012-04-27T06:52:05.297 に答える