ASP.NET Child ControlがDataBoundを完了した後にアクションを実行します
-
29-09-2019 - |
質問
私は、その中により多くのusercontrolを保持するための容器として機能するusercontrolを持っています。
すべての子供のコントロールがデータバウンドを持っていると、特定のアクセスチェックを実行する必要があります。
usercontrol.databoundイベントに添付できることを望んでいましたが、それはないようです。
他のusercontrolsがデータバウンドを持っていると、親のusercontrolで何かをしなければならない他のオプションがあります。私は子供のコントロールを取得してデータバウンドを持っている親に通知しなければならないと思います。親は、どちらがデータバウンドを持っていて、それらがすべてデータバウンドを持っていないときに、そのアクションをpeformすることができます。
解決
親に通知するために子供のコントロールを取得する必要はありません。を見てください ASP.NETページ:ライフサイクル. 。プレレンダーイベントでコードをコンテナユーザーコントロールに入れる必要があります。これは、ポストバックイベントの後に実行されます。
他のヒント
に基づく ASP.NETページライフサイクルイベント 記事私はこれを使用しました:
protected void Page_PreRenderComplete(object sender, EventArgs e)
{
if (!IsPostBack) //only at 1st load
UpdateSelection();
}
protected void UpdateSelection()
{
UpdateSelection(listItems.SelectedValue);
}
protected void listItems_SelectedIndexChanged(object sender, EventArgs e)
{
UpdateSelection();
}
私の場合、UpdateSelectionは、ドロップダウンリスト(開始時にインデックス0を指している)で選択されたファイルからXMLデータをロードしていました。 XMLデータに基づいてそれらのアイテムを確認するコード
それ以降、更新セレクションはドロップダウンリストSelectedIndExChangedイベントで呼び出されたばかりです(それらはPostBackを行いますので、PrerenderCompleteでは、更新セレクションを2回行わないようにそれらを無視します)