использовать значение JavaScript и doPostback? - PullRequest
5 голосов
/ 29 июня 2011

У меня есть страница, где при нажатии кнопки запускается функция javascript. Затем он объединяет некоторые данные и помещает данные в скрытое поле на этой странице. Затем открывается новое окно. Это новое окно собирает эти агрегированные данные примерно так: -

$('#accepted').val(window.opener.$('#accepted').val());

где принято - скрытое поле в родительском и дочернем окнах (runat = "server" не использовался). Проблема в том, что мне нужны эти данные для привязки двух сеток. В настоящее время я сделал doPostback для обеих сеток, но я действительно хочу сделать doPostback для формы один раз и обработать данные, привязывающие событие PageLoad. Итак, два вопроса: -

1) Как я могу отправить обратно форму?

2) Как я могу это сделать, но при этом еще отличаться от фактического представления формы?

Ответы [ 2 ]

1 голос
/ 29 июня 2011

Чтобы опубликовать форму, вы должны просто иметь возможность добавить вызов __doPostback в свой javascript после того, как установлено принятое поле.Вы можете использовать параметры EventTarget и EventArgument __doPostback для управления привязкой в ​​вашей сетке.

Таким образом, вы можете поместить это в свой js:

__doPostback('rebindGrid', '');

и затем на своей страницесобытие загрузки:

if (Request.Form["__EVENTTARGET"] == "rebindGrid")
{
    //....Do so stuff
}
0 голосов
/ 29 июня 2011

Чтобы более тесно связать его с моделью постбэка, я обертываю свой C #

Метод расширения C #

public static string GetPostBackLink (this Control c, string argument = "") {
 return c.Page.ClientScript.GetPostBackEventReference(ctl, argument, true) + ";";
}

ASPX

<asp:LinkButton id="lnkDoThis" runat="server" onclick="lnkDoThis_Click" 
      style="display: none;"></asp:LinkButton>

<asp:HiddenField id="hdnParamHolder" runat="server" />

JS

function DoSomething(param) { 
 $("[id$='hdnDealTemp']").val(param);
 <%= lnkDoThis.GetPostBackLink() %> 
}

CodeBehind

protected void lnkDoThis_Click (object sender, EventArgs e) { 
 var myParam = hdnParamHolder.Value;
 // Do server actions here
}

Что касается открытия во втором окне ... Я не уверен, что следую, когда вы хотите, чтобы это произошло? Если это происходит после обратной передачи, вам нужно будет прочитать данные из элемента управления hdnParamHolder при перезагрузке страницы.

...