繁体   English   中英

初始化后如何更改DataTables的数据?

[英]How can I change the data of DataTables after it has been initialized?

我想填充数据表基于Ajax请求。

这就是我所做的

   $(function(e) {

        $('#CampaignMenu').change(function(e) {

            $('#ReportWrapper').hide();


            if (  $(this).val() != '0') {
                $('#DisplayReport').attr('disabled', false);
            } else {
                $('#DisplayReport').attr('disabled', true);
            }

        });

        $('#DisplayReport').click(function (e) {

            $.ajax({
                type: 'GET',
                url: '/getdata',
                data: { 'campaign_id': $('#CampaignMenu').val() },
                dataType: 'json',
                success: function (json) {

                    $('#reportTable').DataTable({
                        data: json,
                        pageLength: 50,
                        lengthMenu: [10, 25, 50, 75, 100, 250, 500, 1000],
                        searching: false,
                        order: [   [ 2, 'desc' ]  ],
                        columns: [
                            { data: 'chain_name', title: 'Chain Name' },
                            { data: 'store_id' , title: 'Store Number' },
                            { data: 'completed', title: 'Total Surveys Completed' },
                            { data: 'initial_quota', title: 'Target Surveys To Complete' },
                            { data: 'total_callable', title: 'Total Call In The Dialer Queue' },
                            { data: 'current_status', title: 'Current Quota Status' },
                        ]
                    });

                    $('#ReportWrapper').show();

                }
            });

        });

    });

</script>

第一个请求没有问题。 但是,当我第二次调用ajax请求时,我收到此错误

DataTables warning: table id=reportTable - Cannot reinitialise DataTable. For more information about this error, please see http://datatables.net/tn/3

初始化后如何更改表格内容?

我想在页面加载时初始化数据表,然后调用一些事件以便稍后在我的Ajax请求中填充它。 但是,我需要一个事件来调用我的ajax请求。

    $(window).load(function (e) {

        $('#reportTable').DataTable({
            pageLength: 50,
            lengthMenu: [10, 25, 50, 75, 100, 250, 500, 1000],
            searching: false,
            order: [   [ 2, 'desc' ]  ],
            columns: [
                { data: 'chain_name', title: 'Chain Name' },
                { data: 'store_id' , title: 'Store Number' },
                { data: 'completed', title: 'Total Surveys Completed' },
                { data: 'initial_quota', title: 'Target Surveys To Complete' },
                { data: 'total_callable', title: 'Total Call In The Dialer Queue' },
                { data: 'current_status', title: 'Current Quota Status' }
             ]
        });
    });

我尝试在重新初始化之前销毁该表,但这不起作用。

$('#reportTable').DataTable().destroy();

更新

我在初始化之后找到了一种向表中添加数据的方法。 但我需要一种方法来清除数据,所以我不会有重复的数据。

这是我为添加数据所做的工作

           var table = $('#reportTable').dataTable();

                table.fnAddData(json);

以前的代码会继续将数据附加到表中,但它不会首先清除现有数据导致重复。 我在添加以下代码之前尝试添加[table.clear().draw()][2]但是这给了我一个错误

TypeError:table.clear不是函数

我怎样才能正确地让DataTable一次又一次地改变它的内容?

要使用table.clear(),请使用DataTable()而不是dataTable()

dataTable返回一个jquery对象,其中DataTable返回datatables对象

我也遇到了这个问题,他们处理它的方式只是为了摧毁一切并重新创建它,但性能对于这项任务并不是非常关键。

DataTables通过使用destroy:true提供了一个选项,它将破坏以前的数据并重新初始化它! 我也在使用WordPress,它完美无缺。 如果有人遇到这样的问题,你可以试试这个解决方案。 希望这会有所帮助,欢呼!

$('#DisplayReport').click(function (e) {

            $.ajax({
                type: 'GET',
                url: '/getdata',
                data: { 'campaign_id': $('#CampaignMenu').val() },
                dataType: 'json',
                success: function (json) {

                    $('#reportTable').DataTable({
                        destroy: true,   <======= Add this to remove previous table
                        data: json,
                        pageLength: 50,
                        lengthMenu: [10, 25, 50, 75, 100, 250, 500, 1000],
                        searching: false,
                        order: [   [ 2, 'desc' ]  ],
                        columns: [
                            { data: 'chain_name', title: 'Chain Name' },
                            { data: 'store_id' , title: 'Store Number' },
                            { data: 'completed', title: 'Total Surveys Completed' },
                            { data: 'initial_quota', title: 'Target Surveys To Complete' },
                            { data: 'total_callable', title: 'Total Call In The Dialer Queue' },
                            { data: 'current_status', title: 'Current Quota Status' },
                        ]
                    });
                    $('#ReportWrapper').show();
                }
            });
        });
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM