ASP.NET Web 窗体从 JavaScript 对页面的访问控制

我必须修改一个旧的 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>


慕容森
浏览 159回答 2
2回答

函数式编程

编辑:您不能将tablehtml 标记呈现为 ASP.NET 控件,因为它不是一个。您应该考虑使用asp:Table代替:<asp:Table runat="server" ID="employeeChangeHistory">并使用调用您的 javascript$("#<%= employeeChangeHistory.ClientID %>").DataTable();

九州编程

试着把defer脚本。w3schools.com/tags/att_script_defer.asp。另外/或确保您的脚本位于页面末尾。在您的问题中,它在 html 之前。在继续之前,浏览器会完全读取脚本,所以如果是第一次,脚本会查找它需要的 html 标签,但不会找到它们,因为它们还没有出现在页面上。将脚本放在最后有助于(但不保证)脚本可以找到它要查找的任何 html。(Defer有助于保证页面在脚本之前完全加载。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript