1

DropDownList を持つユーザー コントロールがあり、AutoPostBack = trueこのコントロールを表示するための aspx ページもあります。ページの OnInit メソッドでユーザー コントロールを再作成します。

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    var list = (List<Control>)Session[Controls];
    if (list != null)
    {
        foreach (var control in list)
        {
          var uc = (Control)LoadControl(ControlPath);
          uc.SetDropDownState(control.state);
          PlaceHolderQuestion.Controls.Add(uc);
         }
    }
}

したがって、再作成中にドロップダウンの選択を復元していますが、初めて機能しますが、選択を再度変更すると、OnSelectedIndexChanged イベントは発生しません。最初に OnInit でドロップダウンの選択を復元し、OnSelectedIndexChanged イベントがないため、何も発生しません。変更されましたが、回避策を提案できますか?

アップデート

var uc = (コントロール)LoadControl(コントロールパス); ユーザーコントロールイベントを保持する必要があります

4

1 に答える 1

0

詳細な調査の結果、問題は SelectedIndexChanged イベント ロジックにあることがわかりました。ページロジック内で処理するために「間接サブスクリプション」アプローチを使用しています。詳細については、間接サブスクリプションアプローチをご覧ください。

もともとハンドラー内でコントロールをリロードしていましたが、Page_Load メソッドでも行っているので必要ありませんでした。必要なのは、PlaceHolder コントロール リスト内のコントロールを更新することだけです。明確であることを願っています。そうでない場合は、質問してください。詳細を説明します。

于 2014-05-14T11:17:05.707 に答える