0

私は次のコードを持っています

Page_Load () {
 if (!IsPostBack)
   {               
            //data binding to ddl year    

   } else {
       if (ViewState["ddlyear"] != null)
            {
                ddlyear.SelectedValue = ViewState["ddlyear"].ToString();

            }
        }
}

ddlyear_SelectedIndexChanged {
    ViewState["ddlyear"] = ddlyear.SelectedItem.Value.ToString();
}

ここにエラーがあります。

  • ページの読み込みddlyearでアイテムを選択します。これにより、ページが再読み込みされ、ddlにアイテムが正しく表示されます。

  • 表示を変更しても、選択した項目は変更されません。

値にブレークポイントを設定するとddlyear.SelectedItem.Value.ToString();、最初の呼び出しから実際に変更されることはありません。選択したアイテムの値に一度変更されますが、後続のページ呼び出しで別のアイテムが選択されても変更されません。

すなわち

  1. 最初のページの読み込み-ddlyear=1000
  2. 別のオプションに変更します。たとえば、1001
  3. ページのリロード、ddlyear = 1001
  4. 別のオプションに変更します。たとえば、1002
  5. ページのリロード、ddlyear= 1002ではなく1001
4

1 に答える 1

1

デフォルトでは、 ADropDownListはそのを維持しますSelectedItem
そのためのコードを書く必要はありません。追加したコードを削除すると、期待どおりに機能するはずです。

コードが失敗する理由を知りたい場合は、Loadイベントハンドラーが呼び出される前にイベントが発生するためです。ここでは、選択した値をからの値にリセットしていViewStateます。

于 2013-02-06T03:54:38.280 に答える