People のコレクションがバインドされた DataList があり、各 Person には Button があり、クリックすると非同期ポストバックを発生させる必要があるため、OnClick イベント ハンドラーは UpdatePanel に表示される詳細を変更できます [DataList は UpdatePanel の外部にあります]。
Button を設定して、DataList の OnItemDataBound イベント ハンドラで UpdatePanel を変更しようと 2 回試みました。1 つは AsyncPostBackTrigger を UpdatePanel に割り当て、もう 1 つは RegisterAsyncPostBackControl を ScriptManager に割り当てます。どちらも機能しますが、初回のみです。別のユーザーのボタン [または同じボタンを 2 回押す] が押されると、ページは完全にポスト バックされます。
UpdatePanel の UpdateMode が Conditional に設定され、ScriptManager の EnablePartialRenderingEnablePartialRendering が true に設定されています。
OnItemDataBound のコード:
Button btnShowNotes = e.Item.FindControl( "btnShowNotes" ) as Button;
// Trigger
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.ControlID = btnShowNotes.UniqueID;
trigger.EventName = "Click";
upDetails.Triggers.Add( trigger ); // UpdatePanel
// The trigger or this is used, not both
ScriptManager1.RegisterAsyncPostBackControl( btnShowNotes );
最初の Async PostBack が発生すると、参照が失われたように見えますが、これは DataList を常に再バインドしなくても永続化できるのでしょうか? 私がこれを試みている方法で何かが欠けているに違いありません。