Иногда бывает ситуация, когда необходимо обновить UpdatePanel с клиентского скрипта. Я использую следующий простой способ: размещаю обычную кнопку (например asp:Button) на форму, после чего прописываю её как триггер для UpdatePanel, которую необходимо обновить. После чего нам необходимо имитировать нажатие на кнопку с помощью клиентского скрипта. Это можно сделать, нарочно вызвав метод __doPostBack. Этот метод можно сгенерировать серверным вызовом
Page.ClientScript.GetPostBackEventReference(RefreshButton, "")
Где RefreshButton – это вот та самая кнопка.
string str = "<script language=javascript>";
str += "function RefreshButtonFunction()";
str += "{";
str += " " + Page.ClientScript.GetPostBackEventReference(RefreshButton, "") + ";";
str += "}";
str += "</script>";
RegisterStartupScript("scr" + this.ClientID, str);
Данный серверный код генерирует следующий клиентский код:
function RefreshButtonFunction()
{
__doPostBack('ctl00$ContentPlaceHolder1$RefreshButton','');
}
Вызывая эту функцию, мы по сути имитируем нажатие на кнопку RefreshButton, а т.к. она привязана к UpdatePanel как триггер – то следовательно и будет обновлена UpdatePanel.
Теперь последний штрих – размещаем эту кнопку в нулевой фрейм (чтобы ее не было видно) и устанавливаем для страницы EnableEventValidation="false"
Enjoy