ASP.Сетевое обновление нескольких панелей обновлений с помощью JavaScript

#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
}