#javascript #asp.net #updatepanel
#javascript #asp.net #панель обновлений
Вопрос:
У меня есть GridView и некоторый код jQuery, который позволяет пользователю расширять отдельные строки. При расширении строки я отображаю div, который будет содержать больше информации, относящейся к строке. Внутри div находится ASP.Net Панель обновлений. Я вызываю функцию __doPostBack, передающую ИДЕНТИФИКАТОР конкретной панели обновлений, которую я хочу обновить.
var updatePanel = $(expandContent).children("div[id$=UpdatePanel1]").attr("id");
__doPostBack(updatePanel, '');
Однако при отладке я замечаю, что метод * UpdatePanel_Load * вызывается для каждой панели обновлений на странице. Поскольку расширение строки приведет к отключению системы и извлечению данных, я действительно хочу получить эти данные только для конкретной строки, которая была расширена.
Итак, мой вопрос в том, знает ли кто-нибудь о способе заставить отдельные панели обновлений обновляться с помощью JavaScript.
Спасибо, Алан.
Ответ №1:
Если я передам идентификатор панели обновлений функции __doPostBack, например:
var updatePanel = $(expandContent).children("div[id$=UpdatePanel1]").attr("id");
__doPostBack(updatePanel, updatePanel);
В коде, лежащем в основе, я могу выполнить подобный тест, чтобы гарантировать, что извлечение выполняется только для конкретной панели обновлений:
UpdatePanel panel = sender as UpdatePanel;
// the ClientId of the UpdatePanel being update is passed in
// __EVENTARGUMENT this can be checked against the sender to ensure
// data is retrieved only for the row being expanded.
string panelID = Request.Params.Get("__EVENTARGUMENT");
if(panel.ClientID.Equals(panelID))
{
// retrieve data
}