У меня есть DataList, к которому привязан набор людей, при этом у каждого человека есть кнопка, которая при нажатии должна вызывать асинхронную обратную передачу, чтобы обработчик события OnClick мог изменять детали, отображаемые в UpdatePanel [DataList находится вне панели обновления].
Я сделал две попытки установить Button для изменения UpdatePanel в обработчике события OnItemDataBound в DataList. Один назначает AsyncPostBackTrigger для UpdatePanel, а другой - для RegisterAsyncPostBackControl для ScriptManager. Оба работают, но только в первый раз. Если нажата кнопка другого человека [или та же самая кнопка второй раз], страница полностью отправляется обратно.
UpdateManue 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? Я, должно быть, что-то упустил, пытаясь это сделать.