【发布时间】:2019-11-02 02:46:27
【问题描述】:
我必须修改一个旧的 ASP.NET Web 窗体项目。我有一个带有表格的页面,我需要从后面的代码中加载数据。当页面加载时,我想为 JavaScript 中的数据表初始化它。问题是当 JavaScript 运行时,表还没有加载到页面中,因为它是 runat = server.我已经尝试将脚本块放在一个带有 runat=server 的 div 中,因为它们可能会同时出现。没运气。我知道脚本有效,因为如果我从表中删除 runat=server,它们会同时加载,并且它会被初始化为数据表。我也尝试过 RegisterStartupScript 和 RegisterScriptBlock,它们都不起作用。如果我不能让它工作,我可以通过其他方式加载数据。我需要该表作为 runat 服务器的唯一原因是从后面的代码中加载数据
<script type="text/javascript">
st();
function st() {
console.log('load datatable');
$('[name = "employeeChangeHistory"]').DataTable();
}
</script>
<table runat="server" name="employeeChangeHistory"
.....
</table>
【问题讨论】:
-
您真的能够将数据按原样加载到该表中吗?想知道你是否尝试过。 (如果已经用 Adriani6 的回答解决了,忽略这个。)
-
嗨,我还是有同样的问题。基本上我可以关闭runat服务器并且javascript工作,因为页面同时加载了javascript和控件,或者将其放入并在javascript之后加载表格。我可以在 VS 的动态页面调试器中看到这一点。脚本加载,然后是表格
-
好的。老实说,这个问题令人困惑。听起来您需要两张表,一张从代码隐藏加载,一张从 js(DataTables)加载(创建)。或者可能只是一个,您正在将数据从代码隐藏发送到 js,然后加载 DataTables?如果您可以将整个流程放入您的问题中,那将有很大帮助。添加代码隐藏的大纲(由按钮或页面加载或其他触发),然后是获取数据的大纲,以及 js 从何处获取数据;显示“事件”顺序的所有内容。
-
Fwiw,我在我的一个页面上使用 DataTables,我创建了整个 html 表 - 带有数据 - 作为代码隐藏中的字符串,并将其发送到 js 应用到元素页面。
-
啊。所以问题实际上是时机。你也是这么说的……如果你把
defer放在脚本上怎么办? w3schools.com/tags/att_script_defer.asp。 另外/或确保您的脚本位于页面末尾。在您的问题中,它是 before html。如果是第一个,则表标签还没有出现在页面上,但是脚本正在寻找它却找不到它。
标签: javascript datatables