我有一个 ASP.Net 中继器控件,里面有一个表。是否可以在我调用之后直接运行 JavaScript 函数MyRepeater.DataBind()
?我一直在尝试不同的东西,但没有任何东西触发 JavaScript 函数。
谢谢
我有一个 ASP.Net 中继器控件,里面有一个表。是否可以在我调用之后直接运行 JavaScript 函数MyRepeater.DataBind()
?我一直在尝试不同的东西,但没有任何东西触发 JavaScript 函数。
谢谢
作为页面生命周期过程的一部分,数据绑定发生在服务器上的回发中。换句话说,不包括部分 postbadks,在这种情况发生时,浏览器中的任何现有 DOM 都会被销毁。在服务器上构建一个全新的页面并传输到浏览器,这样就可以构建和渲染一个新的 DOM。
这意味着您要考虑在页面的 onload 事件中运行 javascript。实现这一点的一种方法是使用ClientScriptManager。
可以使用 RegisterStartupScript 和 RegisterClientScriptBlock 方法从服务器端调用 Javascript。
http://www.mindfiresolutions.com/Register-clientside-startup-script-from-serverside-code-286.php
不,在代码隐藏执行并将页面交付给客户端之前,javascript 甚至不会呈现和运行。因此,添加脚本是您在代码隐藏中执行的第一件事还是您执行的最后一件事(或直接在DataBind()
.
使用ClientScriptManager 类时,查看后面的代码,您会看到在结束</form>
标记之前添加了动态 javascript(尽管它仍然可以完成您想要做的事情,只是使用不同的方法)。
好吧,我找到了一个解决方案,不确定它是否是最干净的方法,但是对于我的应用程序的上下文,它可以工作:
我在部分回发后运行了 javascript 代码:Sys.WebForms.PageRequestManager.getInstance().add_endRequest();
同样,不是最干净的,但适合我的需求。
感谢您的输入