2014-01-28 6 views
1

Я хочу создать во время выполнения некоторые элементы, которые не должны попадать в «async postback».Runtime сгенерированные элементы управления отключены для Async Postback asp.net

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

На самом деле я пытался 2-мя способами:

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

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

      ScriptManager.GetCurrent (this) .RegisterPostBackControl (control);

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

  2. О генерации элемента

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

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

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

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

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

Спасибо

+0

Что вы хотите достичь?Кнопка без обратной передачи или ...? – Kuzgun

+0

Кнопка, которая при щелчке создает ПОЛНУЮ обратную передачу вместо частичной –

ответ

1

Я выясняю решение, которое работает и которое не связано с каким-либо конкретным кодом/переопределением.

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

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

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

 ScriptManager.GetCurrent().RegisterPostBackControl(grd_Reports); 
1

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

if(IsPostBack){ 
    clickedButtonID=Request.Form["__EVENTTARGET"]; 
}