2009-05-27 5 views
1

У меня есть кнопка gridview, которую я программно создал, и я хочу загрузить панель обновления на стороне клиента с отправленными данными. У меня есть скрытое поле значений, которое получает свои данные по щелчку кнопки gridview, и выпадающий список в моей панели обновлений зависит от этого значения.Как я могу перезагрузить панель обновления onclient с помощью javascript?

ответ

1

при вызове __doPostBack непосредственно будет работать, это не идеальное решение, так как имя этой функции является, строго говоря, деталью реализации .Net framework.

Лучшим решением является использование ClientScriptManager.GetPostBackEventReference, что дает вам более устойчивый интерфейс к той же функциональности. Обратите внимание, что GetPostBackEventReference и GetCallBackEventReference - это не одно и то же: первый вызывает перезагрузку страницы (частичную или полную, в зависимости от того, как настроены ваши UpdatePanels), в то время как последний не работает.

+0

Я не уверен, что понимаю, как это использовать. Это была моя попытка: btnedit.OnClientClick = ClientScript.GetCallbackEventReference (UpdatePanel1, "", "", "") и String.Format ("openModal ('{0}', '" и GridView1.Rows (i) .Cells (0) .Text & "'); return false; ", hidden.ClientID) Я не уверен, что добавить в качестве параметров. – Eric

+0

Я отредактировал свой ответ, чтобы указать, что вы, вероятно, хотите получить обратную передачу, а не обратный вызов –

+0

Я немного смущен тем, что вы пытаетесь сделать - делает ли пользователь что-то с результатом openModal(), и после того, как они сделали это, вы хотите, чтобы список перепроверялся? –

0

мы используем метод __doPostBack(), который имитирует постбэк и вызывает UpdatePanel для обновления

__doPostBack('controlName',''); 

Не забывайте, что имя управления это HTML ID (который также может содержать доллары и т.д.), а не просто это идентификатор ASP.NET.

Насколько я знаю, вы можете вызвать этот метод и передать в поле скрытого значения, или DIV, что он находится.

+0

Я попытался назвать это как этот __doPostBack ('<% = Upd atePanel1.ClientID%>», ''); Как это назвать метод? – Eric

+0

-1: вызов __doPostBack напрямую - плохая практика. –

+0

Я знаю, что не всем нравится _doPostBack, но, пожалуйста, объясните, почему это плохая практика. Это хорошо воспринятая практика и широко используется, и все отрицательные стороны ее использования, такие как потенциал для _doPostBack, устаревают, необоснованны. – tjmoore

1

Самый простой способ сделать это - вызвать __doPostBack с клиентской стороны.

На стороне клиента метод button1_onclick называет:

__doPostBack('<%=UpdatePanel1.ClientID %>','Refresh:0,1,2'); //refresh update panel 

На странице позади добавьте следующий обработчик событий, чтобы захватить пост обратно вызова:

protected void UpdatePanel1_Load(object sender, EventArgs e) 
{ 
    string arg = Request.Form["__EVENTARGUMENT"]; 

    if (string.IsNullOrEmpty(arg)) return; 

    if (arg.StartWith("Refresh") 
    { 
     //parse data first then do your thing here... 
    } 
} 

И, конечно же, не забывайте проволоки событие с указанным выше способом:

protected void Page_Init(object sender, EventArgs e) 
{   
    UpdatePanel1.Load += new EventHandler(UpdatePanel1_Load); 
} 
Смежные вопросы