1

dropdownlistのテンプレート列内にロードされたコントロールがありますRadGrid
ロード中に、イベントを設定AutoPostBack='True'dropdownlistて作成しましたSelectedIndexChanged

 DropDownList ddlConditions = new DropDownList(); 
 ddlConditions.ID = "ddl" + name;
 ddlConditions.AutoPostBack = true;
 ddlConditions.SelectedIndexChanged += new EventHandler(ddlConditions_SelectedIndexChanged);

私の質問は、選択しdropdownlistたイベントのインデックスを変更している間SelectedIndexChanged、トリガーされないということです。
誰かが私がこの問題を解決するのを手伝ってくれる?
前もって感謝します。

4

3 に答える 3

1

通常、これはpage life cycle problem. ドロップダウンリストのインデックス変更イベントが発生すると、ポストバックにバインドするためのコントロールが存在しません。

例:

-> MyEvent が発生します。-> ドロップダウンが作成されました。-> イベントハンドラが指定されました。-> Index Changed イベントがトリガーされました。ページがリロードされます。ドロップダウンが見つからないため、起動できません。

そのため、ensure that the drop-down is created before.NET でイベントを処理しようとする必要があります。

このタイプの問題とライフ サイクルに関する詳細については、この回答を参照してください。

于 2012-11-21T09:00:27.943 に答える
1

DropDownListを作成した場所を確認することをお勧めします。OnInitまたは少なくともOnLoadに動的コントロールを追加する必要があります。OnLoad が ASP.NET の実行を終了すると、コントロールのイベントと値の処理が開始されます。

私の質問は、ドロップダウンリストの選択されたインデックスを変更している間、イベント SelectedIndexChanged がトリガーされないことです。

回答:イベントが処理された後に DropDownList を作成したためです。

于 2012-11-21T09:01:55.773 に答える
0

ページは投稿されていますか?その場合は、ポストバックごとにコントロールがページで再作成されるようにする必要があります。

通常のブロックの内側にある場合はif(!IsPostBack)、外側に配置します - 通常、コントロールも同様に作成するのが賢明page_initですが、それは特定の設定に依存する可能性があります。

于 2012-11-21T08:55:33.097 に答える