-1

ページのリロード後も選択したアイテムを保持したい:

.aspxからの抜粋:

    <asp:DropDownList ID="MyDropDown" runat="server" AutoPostBack="true" 
        onselectedindexchanged="MyDropDown_SelectedIndexChanged">

    </asp:DropDownList>

page_loadの.csからの抜粋

        if (!IsPostBack)
        {
            PopulateDropDownList();
        }

    private void PopulateDropDownList()
    {
        MyDropDown.Items.Add("1");
        MyDropDown.Items.Add("2");
    }

    protected void MyDropDown_SelectedIndexChanged(object sender, EventArgs e)
    {
        Response.Redirect(Request.RawUrl);
    }
4

2 に答える 2

1

Response.Redirectでページを更新すると、インデックスが選択されているビューステートが失われます。リダイレクトする前に、選択したインデックスをセッションに入れることができます。

protected void MyDropDown_SelectedIndexChanged(object sender, EventArgs e)
{
    Session["MyDropDownSelectedIndex"] = MyDropDown.SelectedIndex.ToString();
    Response.Redirect(Request.RawUrl);
}
于 2012-10-06T11:51:05.163 に答える
1

Page init イベントでドロップダウン リストを設定する必要があります。ページ読み込みイベント中にこれを行うと、ビューステートを正しく復元できず (ページ読み込みイベントの前にドロップダウン リストにデータが入力されないため)、選択されたインデックス変更イベントを発生させることができません。

EDIT:ドロップダウンリストに入力するデータをキャッシュして、データベースへの移動を節約することができます。on selected index changed イベントでもリダイレクトする必要はないと思います。

于 2012-10-06T11:52:13.327 に答える