使用javascript值和doPostback

本文关键字:doPostback 值和 javascript 使用 | 更新日期: 2023-09-27 18:00:37

我有一个页面,点击一个按钮,就会运行一个javascript函数。然后,它聚合一些数据,并将数据放置在此页面中的隐藏字段中。然后打开一个新窗口。这个新窗口收集这些聚合数据,如下所示:-

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

其中accepted是父窗口和子窗口中的隐藏字段(未使用runat="server")。现在的问题是,我需要这些数据来数据绑定两个网格。目前我已经在两个网格上做了doPostback,但我真正想做的是为表单做一次doPostback并处理PageLoad事件的数据绑定。所以有两个问题:-

1) 我该怎么办把表格寄回去?

2) 我如何做到这一点,同时仍然能够与实际提交的表格区分开来?

使用javascript值和doPostback

要发布表单,只需在设置了接受字段后,在javascript中添加对__doPostback的调用即可。您可以使用__doPostback的EventTarget和EventArgument参数来控制网格中的绑定。

所以,你可以把这个放在你的js:中

__doPostback('rebindGrid', '');

然后这个在你的页面加载事件:

if (Request.Form["__EVENTTARGET"] == "rebindGrid")
{
    //....Do so stuff
}

为了更直接地将其与回发模型联系起来,我用一些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() %> 
}

编码背后

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

至于第二扇窗户的开口。。。我不确定你想让什么时候发生?如果是在回发之后,则在重新加载页面时需要从hdnParamHolder控件中读取。