【问题标题】:Datatables throwing error on window resize数据表在窗口调整大小时抛出错误
【发布时间】:2016-09-02 16:28:43
【问题描述】:

我有一个数据表。

当我设置它时,我没有收到任何错误,表格已正确生成,但是每当我调整窗口大小时,我都会收到此错误:

0x800a138f - JavaScript 运行时错误:无法获取属性“样式” 未定义或空引用

这里的代码我觉得不能复现,但是可以保证表结构是正确的。

这是我用来创建数据表的:

function initDataTable() {
    if ($.fn.dataTable.isDataTable($('#grdPrincipal'))) {
        $('#grdPrincipal').DataTable().destroy();
        initDataTable();
    } else {
        $("#grdPrincipal")
            .DataTable({
                scrollY: 210,
                scrollX: true,
                fixedHeader: true,
                fixedColumns: true,
                paging: false,
                info: false,
                searching: false
            });
    }
}

由于我在我的 asp.net webforms 项目中使用了 UpdatePanel,所以每当我进行回发时,我都必须运行此代码,因为每次都会重建表。

正如我所说,回发或其他任何事情都没有问题,唯一的问题是当我调整窗口大小时。

会是什么?

【问题讨论】:

    标签: jquery webforms datatables


    【解决方案1】:

    尝试在更新 updatePanel 之前销毁数据表,如下所示:

    var prm = Sys.WebForms.PageRequestManager.getInstance();
        function BeginRequestHandler(sender, args) {
            //Runs before updatePanel starts updating
            $('#grdPrincipal').DataTable().destroy();
        }
    
        function EndRequestHandler(sender, args) {
            initDataTable();
            //Runs after updatePanel has finished updating
        }
        prm.add_beginRequest(BeginRequestHandler);
        prm.add_endRequest(EndRequestHandler);
    

    【讨论】:

    • 我在这里做了一些不同的事情,我注意到第一次创建 dataTable 时,我可以根据需要调整窗口大小,但是在重新加载 updatePanel 后,如果我调整大小会引发此错误窗户。当 updatePanel 重新加载时,表会被重建,所以它不再是数据表了。
    • 我有这个 -> function pageLoad() { initDataTable(); }
    • 嗯,看起来您需要另一个事件回调......“.resize()”jQuery 的功能。我写在我的帖子里,1分钟后看看。
    • 现在看看,希望对你有帮助
    • 这实际上有点毁了我的桌子。它正在复制行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2012-08-02
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    相关资源
    最近更新 更多