我有一个 DataList,其中绑定了一个 People 集合,每个 Person 都有一个 Button,单击该按钮时需要导致异步回发,因此 OnClick 事件处理程序可以更改 UpdatePanel 中显示的详细信息 [DataList 在 UpdatePanel 之外]。
我曾两次尝试设置 Button 以更改 DataList 的 OnItemDataBound 事件处理程序中的 UpdatePanel。一个将 AsyncPostBackTrigger 分配给 UpdatePanel,另一个将 RegisterAsyncPostBackControl 分配给 ScriptManager。两者都有效,但只是第一次。如果另一个人的按钮[或第二次相同的按钮]被按下,则页面将完全回发。
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 );
一旦第一次异步回发发生,它似乎失去了引用,但肯定可以保持这种状态,而不必不断重新绑定 DataList?我尝试这样做的方式一定是遗漏了一些东西。