Элементы управления, созданные во время выполнения, отключены для Async Postback asp.net
Я хочу создать во время выполнения некоторые элементы, которые не должны попадать в "асинхронную обратную передачу".
На самом деле у меня есть кнопка для каждой строки в моем виде сетки. Эти элементы управления должны генерировать не частичную обратную передачу, а полную обратную передачу (потому что результатом должна быть загрузка отчета).
На самом деле я пытался двумя способами:
На странице загрузки
- рекурсивный поиск для всех элементов управления, которые являются Button и имеют указанный класс
добавить элемент в ScriptManager через:
ScriptManager.GetCurrent (это).RegisterPostBackControl(контроль);
этот код выполняется по правильному номеру времени, но частичная обратная передача все еще генерируется
По генерации предметов
- Я добавляю событие "OnDataBinding" к генерации кнопки
в этом случае я делаю что-то вроде:
var button = (Контроль) отправитель;
ScriptManager.GetCurrent (это).RegisterPostBackControl(кнопка);
Почему это не работает?
В обоих случаях я нажимаю на конкретный случай и "регистрирую" элементы управления как "сделать полный постбэк", так как получить частичный?
Спасибо
2 ответа
Я нахожу решение, которое работает и которое не включает какой-либо конкретный код / переопределение.
Я сосредоточился на единственной "автоматически генерируемой" кнопке, но когда я начинаю думать об областях и родителях, все идет хорошо.
В качестве решения я просто регистрирую ВСЕ GridView в диспетчере скриптов, таким образом, весь контроллер внутри генерирует полную обратную передачу вместо частичной.
В моей Page_Load у меня сейчас:
ScriptManager.GetCurrent().RegisterPostBackControl(grd_Reports);
Я не знаю, что вы подразумеваете под частичной обратной передачей, но я предполагаю, что вы пытаетесь что-то сделать с событием нажатия кнопки, которое вы хотите произвести после загрузки страницы. Для этого есть быстрый обход: на странице загрузки вы можете проверить, какая кнопка была нажата.
if(IsPostBack){
clickedButtonID=Request.Form["__EVENTTARGET"];
}