探しているものを達成する方法はいくつかあります。1 つ目は、含まれているページでイベントの順序を変更するだけです。PageLoad イベントではなく PreRender イベントを使用すると、ドロップダウン選択アクションが完了し、情報がすぐに利用できるようになります。
おそらくより拡張可能な 2 番目の方法は、ページがリッスンして処理するユーザー コントロールからカスタム イベントを発生させることです。次に、情報がすぐに利用できる時点でアクションが直接実行されます。これにより、含まれている構造 (ページ、ユーザーコントロール、または同様のものであるかどうかにかかわらず) がイベントをサブスクライブし、必要なものを処理できます。
もう少し厳格な 3 番目の方法は、データが完了するとユーザーコントロールによって呼び出される関数を含むページに含めることです。これには、ユーザーコントロールが含まれる特定のページタイプを知っている必要があるため(拡張性が低くなります)、お勧めしません。
編集:カスタムイベントでオプション#2を実装するためのアイデアは次のとおりです。
public partial class MyUserControl: UserControl
{
//All of your existing code goes in here somewhere
//Declare an event that describes what happened. This is a delegate
public event EventHandler PageSizeSelected;
//Provide a method that properly raises the event
protected virtual void OnPageSizeSelected(EventArgs e)
{
// Here, you use the "this" so it's your own control. You can also
// customize the EventArgs to pass something you'd like.
if (PageSizeSelected!= null)
PageSizeSelected(this, e);
}
private void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
_SelectedPageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
OnPageSizeSelected(EventArgs.Empty);
}
}
次に、ページ コードでイベントをリッスンします。ページ読み込みのどこかに次を追加します。
myUserControlInstance.PageSizeSelected += MyHandinglingMethod;
次に、イベントを処理するメソッドを提供します。
protected void MyHandlingMethod(object sender, EventArgs e)
{
// Do what you need to do here
}