【发布时间】:2009-11-04 13:40:00
【问题描述】:
我有一个 DIV,其中有一个 asp:repeater,它根据数据将信息放入此 div。然后我使用 Jquery 的 UI 对话框通过单击按钮向用户显示数据。这一切都很顺利。
所以,我希望能够将记录添加到填充中继器的数据中。我在屏幕的另一部分可以输入这些数据,并使用 ajax 调用将其保存到数据库中。这也很有效。
然后我想更新我的对话框中的数据,而不必完全回发到服务器。所以,这通常很容易。我将我的 div 放入一个 UpdatePanel,并从 Jquery 启动一个 __doPostBack。然后刷新数据,这也可以游泳到一个点。
一旦 __doPostBack 完成,该 div 将不再隐藏。它现在显示在我的页面上(请注意更新的数据),但我用来显示对话框的 javascript 现在不再有效。
一些调查表明:
- 在页面初始加载时,告诉 jquery 从 div 创建对话框的 javascript 从表单上的任何位置获取 div,并将其附加到 body 元素。
- 当更新面板回发时,div 被重新创建,但是将其转换为对话框的 javascript 也没有再次执行(我可以理解...我们还没有完成页面的完整加载,所以 javascript 不会再次执行。
- 这意味着 div 不再是“对话框”,而是我页面上的简单 div,这不是我想要的。
所以,我的问题是:
有没有办法在 updatepanels 回发后注入 javascript,这将再次正确执行并创建对话框?
【问题讨论】:
-
除非 __doPostBack(或 updatepanels)可以回调自定义函数,否则我看不出你怎么能做到这一点。
-
我们能看到这样做的代码吗?
-
我已经解决了这个问题。我没有使用更新面板来刷新网格的内容,而是通过 ajax 调用返回 HTML,并在插入完成后设置 div 的 innerhtml。运行良好,无需更新面板。
标签: asp.net jquery asp.net-ajax updatepanel