Javascript 部分页面回发后的ASP.NET注册脚本(UpdatePanel)
我有一个简单的表单(文本框,提交按钮),它被包装在一个更新面板中Javascript 部分页面回发后的ASP.NET注册脚本(UpdatePanel),javascript,asp.net,asp.net-ajax,updatepanel,partial-page-refresh,Javascript,Asp.net,Asp.net Ajax,Updatepanel,Partial Page Refresh,我有一个简单的表单(文本框,提交按钮),它被包装在一个更新面板中 <asp:UpdatePanel ID="ReplyUpdatePanel" UpdateMode="Conditional" runat="server"> <ContentTemplate> <asp:Textbox id="ReplyTextBox" runat="server"/> <asp:Button id="SubmitButton" On
<asp:UpdatePanel ID="ReplyUpdatePanel" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:Textbox id="ReplyTextBox" runat="server"/>
<asp:Button id="SubmitButton" OnClick="SubmitButton_Click" runat="server"/>
<ContentTemplate>
</asp:UpdatePanel>
还有这个
ScriptManager.RegisterStartupScript
都不工作(什么也没发生)
现在我可以使用客户端AJAX库(在部分更新完成后执行客户端脚本)连接到.add_pageLoaded
函数,但问题是我需要来自服务器的数据,这些数据是在button click事件中创建的
即:
Sys.Application.add_init(函数(){
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(函数(发送方,参数){
var panels=args.get_panelsUpdated();
对于(变量i=0;i
目前我唯一能想到的“黑客”是执行上述操作,但调用一个web服务,再次获取所有数据,然后执行我的脚本。我之所以说“hack”,是因为我不需要进行异步回发,挂接到部分回发后事件处理程序中,然后再次调用服务器以获取之前发布的信息
这似乎是一个普遍的问题。不,我不能删除UpdatePanel(尽管我很想删除),我不想浪费时间争论原因
有没有什么好主意
编辑
关于我需要发送到脚本的数据的澄清:
我在文本框中键入一些文本,单击提交,然后服务器创建一个数据库记录并返回一个对象,该对象具有ID、Name、URL、Blah等属性。这些是脚本需要的值
因此,如果要从客户机代码调用web服务,为了获取刚刚创建的值,我需要进行一些黑客操作(修改最后一条具有文本框值的记录)。这并不理想,一个表单post的两个AJAX调用也不理想。(更新面板回发,然后是web服务调用)。而不是您希望在此处添加页面加载的
,如下所示:
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) {
//check here...
});
不同之处在于,当任何部分回发返回时都会运行。谢谢,但没有区别。我需要从服务器访问值(在服务器端单击事件中创建)。如何使用上述代码?@RPM1984-在隐藏输入中,或通过ScriptManager.RegisterStartupScript
,当您尝试使用ScriptManager
时,是否使用UpdatePanel作为第一个参数的控件?就是这样。我用的是“this”,所以我通过了控制。谢谢
Sys.Application.add_init(function () {
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function (sender, args) {
var panels = args.get_panelsUpdated();
for (var i = 0; i < panels.length; i++) {
// check panels[i].id and do something
}
});
});
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) {
//check here...
});