我有一个UpdatePanel,并希望在回发后执行javascript操作,我的所有页面都使用全局pageLoad(sender, args)
所以我不能使用pageLoad(sender, args)
来处理此特定事件,我尝试了2以下方法:
//Global pageLoad, executes in all pages
function pageLoad(sender, args) {
myGlobalCode();
try {localPageLoad(sender, args)}
catch (err) {}
}
// This is in the page with the update panel
function localPageLoad(sender, args) {
if ($('#AfterPostback').val() == 'SHOWTOOLBOX')
// etc....
}
这里的问题是同步性,如果我在此代码中设置调试警报一切正常,但如果我执行没有警报它什么都不做,所以我想这与文档完成有关
我尝试的另一件事是在部分回发触发的事件中使用ScriptManager:
cstext1.Append(String.Format("alert('CS TOOL'); showToolbox({0});", AfterPostbackParams.Value))
ScriptManager.RegisterClientScriptBlock(Me, GetType(Page), "InitPage", cstext1.ToString(), True)
我发现同样的问题,如果我设置调试警报一切正常,如果我运行这样的代码它不起作用。
有什么想法吗?感谢
答案 0 :(得分:0)
你可以使用以下内容吗?
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest();
Sys.WebForms.PageRequestManager.getInstance().add_endRequest();
答案 1 :(得分:0)
在使用更新面板和其他javascript执行时,我总是使用RegisterStartupScript
与RegisterClientScriptBlock
获得更多运气。例如:
cstext1.Append(String.Format("showToolbox({0});", AfterPostbackParams.Value));
ScriptManager.RegisterStartupScript(Me, GetType(Page), "InitPage", cstext1.ToString(), True);
UpdatePanels的优点在于它们可以通过使用fiddler或任何现代浏览器开发人员工具的网络选项卡轻松诊断问题。由于UpdatePanel
只需将已替换的HTML发送回面板div即可,因此您可以轻松查看返回的内容以确保其有意义。