我有一个DIV,其中我有一个asp:repeater,它根据数据将信息放入这个div中。然后,我使用Jquery的UI对话框通过单击按钮向用户显示数据。这一切都在游泳。
所以,我希望能够在填充转发器的数据中添加记录。我有屏幕的另一部分,人们可以输入这些数据,并使用ajax调用将其保存到数据库中。这也是游泳的方式。
然后,我想更新对话框中的数据,而不必完全回发到服务器。所以,这通常很容易。我将我的div放入UpdatePanel,并从Jquery启动__doPostBack。然后刷新数据,这也可以在一定程度上发挥作用。
__doPostBack完成后,不再隐藏div。它现在显示在我的页面上(更新的数据让你高兴),但我用来显示对话框的javascript现在不再有用了。
一些调查显示:
所以,我的问题是:
有没有一种方法可以在updatepanels回发时注入javascript,这将会再次执行并正确创建对话框?
答案 0 :(得分:1)
解决方案是根本不使用Updatepanel,只需使用通过jquery ajax调用接收的数据更改div的innerHTML。
答案 1 :(得分:1)
我找到了另一个解决方案。我将对话框初始化javascript放在一个名为SetupDialog的单独函数中,而不是在$(function () { });
块内。
然后我在Page_Load中使用ScriptManager.RegisterStartupScript
来注册脚本,以便每次更新面板更新时它都会运行:
ScriptManager.RegisterStartupScript(this, GetType(), "SetupDialog", "SetupDialog();", true);
在这种情况下,只有在UpdatePanel更新后,该对话框才会起作用。如果您之前需要对话框,那么您也可以在$(function () { });
块内调用SetupDialog。