9

onSelectIndexChangedイベントを担当しています。DropDownList の選択が変更されると、イベントが発生します。問題は、DropDownList がまだ と の古い値を返すことSelectedValueですSelectedIndex。私は何を間違っていますか?

aspx ファイルの DropDownList 定義は次のとおりです。

<div style="margin: 0px; padding: 0px 1em 0px 0px;">
    <span style="margin: 0px; padding: 0px; vertical-align: top;">Route:</span>
    <asp:DropDownList id="Select1" runat="server" onselectedindexchanged="index_changed" AutoPostBack="true">
    </asp:DropDownList>
    <asp:Literal ID="Literal1" runat="server"></asp:Literal>
</div>

DropDownListOnSelectedIndexChangedイベント ハンドラは次のとおりです。

protected void index_changed(object sender, EventArgs e)
{
    decimal d = Convert.ToDecimal( Select1.SelectedValue );
    Literal1.Text = d.ToString();
}
4

5 に答える 5

13

偶然に値を最初の値にデフォルト設定し直すコードがページの読み込みにありませんか?

ページをリロードすると、新しい値が表示されますか?

于 2008-09-16T18:14:21.577 に答える
3

AJAX を使用している場合は、完全なポストバックではなく、コールバックも実行している可能性があります。その場合、ページのロード メソッドでこれを使用することができます。

        if (!IsCallback && !IsPostBack)
        {
            // Do your page setup here
        }
于 2008-09-16T19:08:19.497 に答える
2

これを追加: if page.isnotpostback {

ドロップダウンリストをバインドするためにコードを囲みます。

于 2008-09-16T18:22:11.417 に答える
2

これは当たり前のように思えるかもしれませんが、とにかく。このドロップダウンを OnLoad などの他のイベント ハンドラの初期値で初期化しますか? その場合、そのイベントがポストバックまたは最初のロードによって発生したかどうかを確認する必要があります。だからあなたは次のようなものを持っている必要があります

if(!IsPostback) d.SelectedValue = "Default"
于 2008-09-16T18:26:39.503 に答える
0

ドロップダウン リストの項目をデータソース全体にコピーすることは可能ですか?

于 2008-09-16T18:21:31.933 に答える