日期:2014-05-18  浏览次数:20429 次

ajax中ClientScriptmanager
我的ajax中ClientScriptmanager中的RegisterStartupScript为什么不能弹出对话框

------解决方案--------------------
贴出代码,才能分析
------解决方案--------------------
如果你用RegisterStartupScript的话,js就被注册到页面开始
这时候你得保证你的dialog已经rander了,否则肯定是 XXX is undefined

建议这样时候用Page.ClientScript.RegisterClientScriptBlock,将脚本注册到页面最后,页面上元素rander完就调用你的
dialog

------解决方案--------------------
ClientScriptmanager中的RegisterStartupScript
如果页面有异步postback,这样注册的js不能起效,
你的页面使用了updatepanel,使用ScriptManager的
------解决方案--------------------
应该是

ScriptManager.RegisterStartupScript(UpdatePanel1,UpdatePanel1.GetType(),"H", "return window.confirm( 'do you want leave?')",true)
------解决方案--------------------
ScriptManager not cs
------解决方案--------------------
UpdatePanel 不能使用this.ClientScript;
------解决方案--------------------
你用了这个this.GetType() 肯定不行。你换个updatepanel中的button试试
------解决方案--------------------
ScriptManager.RegisterStartupScript(this, this.GetType(), "a", "<script>alert('');</script>", false); 
以前遇到过,不记得了。
ScriptManager.RegisterClientScriptBlock(UpdatePanel1, this.GetType(), "click", "alert('提示信息')", true);就可以正常的弹出 alert 对话框了。

注:如果在页面中有多个 UpdatePanel,如果每个 UpdatePanel 的 UpdateMode 都是“always”[默认值]的话,那么你使用那个 UpdatePanel 的实例作为参数都可以;如果每个 UpdaePanel 的 UpdateMode=conditional,那么你必须使用正在更新的那个 UpdatePanel 作为参数,这样脚本才能起作用。
百度搜:
asp.net ajax 弹不出对话框
应解决问题
------解决方案--------------------
不好意思,说反了,应该是

如果你用RegisterStartupScript的话,js就被注册到页面最后

罪过,罪过


探讨

如果你用RegisterStartupScript的话,js就被注册到页面开始
这时候你得保证你的dialog已经rander了,否则肯定是 XXX is undefined

建议这样时候用Page.ClientScript.RegisterClientScriptBlock,将脚本注册到页面最后,页面上元素rander完就调用你的
dialog