ここに問題があります。私は3つのコンポーネントを持っています...ユーザーコントロールとユーザーコントロールにあるサーバー側のコントロールを含むページ。ユーザーコントロールには、サーバー側のコントロールが何を変更するかをリッスンするイベントがいくつかあります。.NETコントロールのイベントとページのライフサイクル
サーバーコントロールは、イベントを必要とする多くの小さなASP.NETコントロールで満たされたテレビガイドの一覧を作成します。これらのコントロールはすべて動的に作成されます(サーバー側は明らかです)。このサーバーサイドコントロールを実装するには、本質的に集中的な操作が必要となるため、ポストバックごとに1回だけ実行する必要があります。イベント1とイベント2が発生し、基本的にサーバーサイドコントロールのレンダリング(並べ替え、フィルタリングなど)に関する事項が変更され、発生時にPopulateControlsを確実に呼び出す必要があります。
問題は次のとおりです。PopulateControlsを呼び出すための最適な場所を見つけることができません。私がPageLoadに置くと、イベントの前にリストが起動して描画されます。その後、私のイベントは、イベントに応答するPopulateControlsを呼び出す必要があります。 PreRenderで呼び出しを行うと、サーバーサイドコントロールのイベントは発生しません。なぜなら、私が読み込んだものからPageLoadの前または途中で作成する必要があるからです。
私はこのコールをどこに1回だけ呼び出す必要があり、適切なイベントに応答できるようにする必要がありますか?
はここ
public class MyPage : System.Web.UI.Page
{
protected UserControl MyUserControl;
// Wire up event handlers
MyUserControl.Event1 += OnEvent1;
MyUserControl.Event2 += OnEvent2;
public Page_Load()
{
}
public PreRender()
{
PopulateControls();
}
private PopulateControls()
{
// Do intensive operation to populate controls
}
protected OnEvent1()
{
}
protected OnEvent2()
{
}
}
しかし、それは私の問題を解決しません。私がそこに作成した場合、イベントが後で発生したときにそれらを再作成する必要があります。イベントが描画される必要があるためです。 – cjserio