Элементы управления, созданные во время выполнения, отключены для Async Postback asp.net

Я хочу создать во время выполнения некоторые элементы, которые не должны попадать в "асинхронную обратную передачу".

На самом деле у меня есть кнопка для каждой строки в моем виде сетки. Эти элементы управления должны генерировать не частичную обратную передачу, а полную обратную передачу (потому что результатом должна быть загрузка отчета).

На самом деле я пытался двумя способами:

  1. На странице загрузки

    • рекурсивный поиск для всех элементов управления, которые являются Button и имеют указанный класс
    • добавить элемент в ScriptManager через:

      ScriptManager.GetCurrent (это).RegisterPostBackControl(контроль);

    • этот код выполняется по правильному номеру времени, но частичная обратная передача все еще генерируется

  2. По генерации предметов

    • Я добавляю событие "OnDataBinding" к генерации кнопки
    • в этом случае я делаю что-то вроде:

      var button = (Контроль) отправитель;

      ScriptManager.GetCurrent (это).RegisterPostBackControl(кнопка);

Почему это не работает?

В обоих случаях я нажимаю на конкретный случай и "регистрирую" элементы управления как "сделать полный постбэк", так как получить частичный?

Спасибо

2 ответа

Решение

Я нахожу решение, которое работает и которое не включает какой-либо конкретный код / ​​переопределение.

Я сосредоточился на единственной "автоматически генерируемой" кнопке, но когда я начинаю думать об областях и родителях, все идет хорошо.

В качестве решения я просто регистрирую ВСЕ GridView в диспетчере скриптов, таким образом, весь контроллер внутри генерирует полную обратную передачу вместо частичной.

В моей Page_Load у меня сейчас:

        ScriptManager.GetCurrent().RegisterPostBackControl(grd_Reports);

Я не знаю, что вы подразумеваете под частичной обратной передачей, но я предполагаю, что вы пытаетесь что-то сделать с событием нажатия кнопки, которое вы хотите произвести после загрузки страницы. Для этого есть быстрый обход: на странице загрузки вы можете проверить, какая кнопка была нажата.

if(IsPostBack){
    clickedButtonID=Request.Form["__EVENTTARGET"]; 
}
Другие вопросы по тегам