Вызов ScriptManager.RegisterPostBackControl во время AsyncPostBack - PullRequest
1 голос
/ 13 октября 2010

У меня есть пользовательский элемент управления, который является оберткой вокруг ASPxGridView. Этот пользовательский элемент управления вложен в UpdatePanel. В один из столбцов я добавляю LinkButton, который я регистрирую, вызывая ScriptManager.RegisterPostBackControl.

В сетке включена подкачка. Разбиение на страницы, конечно, выполняется во время AsyncPostBack.

Когда сетка показывает свою первую страницу, все работает как положено: нажатие кнопки вызывает PostBack.

Однако, если текущая страница не первая, нажатие кнопки один раз не вызывает PostBack, а повторное нажатие на нее (фактически нажатие любой кнопки внутри столбца) вызывает ошибку.

Эта же ошибка выдается, если я закомментирую строку, в которой регистрируется кнопка, с помощью ScriptManager и нажимаю кнопку на первой странице.

Таким образом, это заставляет меня думать, что кнопки на первой странице регистрируются правильно, потому что это делается во время PostBack, и что регистрация кнопок на любой другой странице не выполняется (по какой-то причине), потому что это делается во время AsyncPostBack .

Есть мысли? Возможное решение?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 18 октября 2010

Я решил это, установив для ASPxGridView EnableCallbacks значение false .

0 голосов
/ 13 октября 2010

Я думаю, что вам нужно перерегистрировать свой Javascript, который контролирует вашу кнопку после UpdatePanel.Для этого:

var prm = Sys.WebForms.PageRequestManager.getInstance();    
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);

function InitializeRequest(sender, args) {      
}

function EndRequest(sender, args) {
}

Обязательно запустите этот раздел после PageLoad или после менеджера сценариев, чтобы дать странице время для загрузки объекта Sys.

...