jQuery DataTables长度更新问题

时间:2011-08-05 10:49:18

标签: jquery datatables

我定义了一个动态数据表。

ListLone_datatable = jQuery('#my_table').dataTable(
    {
        'bFilter': false,
        'bPaginate': true,
        'iDisplayLength': 5,
        'bLengthChange': false,
        'bSort': true,
        'bInfo': true,
        'bAutoWidth': false,
        'sPaginationType': 'full_numbers',
        'oLanguage': 
        {
            'oPaginate': 
            {
                'sPrevious': '«',
                'sNext': '»'
            }
        },
        'bProcessing': true,
        'bServerSide': true,
        'sDom': '<"dataTables_top"pi>lftpir',
        'bDestroy': true,
        'sAjaxSource': ListLone_datasource_url + ListLone_filter,
        'aoColumns': 
            [
                {
                    'fnRender': 
                        function(row_data) 
                        { return _icon_html(row_data.aData[8], 'property_new.gif') },
                    'bSortable': false
                },
                {
                    'fnRender': 
                        function(row_data) 
                        { return _icon_html(row_data.aData[9], 'property_featured.png') }, 
                    'bSortable': false
                },
                {
                    'fnRender': 
                        function(row_data) 
                        { 
                        console.log('rowdata', row_data);
                            var control_div =
                                '<div class="row-actions">';

                            control_div += 
                                '<span><a href="' + row_data.aData[7] + 
                                '" target="_blank">View</a> | </span>';
                            control_div += 
                                '<span><a href="admin.php?page=_properties&id=' + 
                                row_data.aData[10] + '">Edit</a> | </span>';
                            control_div += 
                                '<span><a href="admin.php?page=_properties&id=' + 
                                row_data.aData[10] +'" class="pl_listing_delete">Delete</a> | </span>';

                            if (typeof(Admin_properties_item_menu) != 'undefined')
                            {
                                var addon_data = Admin_properties_item_menu(row_data.aData);
                                control_div += addon_data;
                            }

                            control_div += 
                                '<span>' +
                                _flag_html(row_data.aData[10], row_data.aData[8], 
                                    'is_new', 'New', 0, 'property_new.gif') +
                                ' | </span>';
                            control_div += 
                                '<span>' +
                                _flag_html(row_data.aData[10], row_data.aData[9], 
                                    'is_featured', 'Featured', 1, 
                                    'property_featured.png') +
                                '</span>';

                            control_div += '</div>';

                            excerpt_div = '';
                            if (!ListLone_is_mode_list)
                                excerpt_div = '<div>' + row_data.aData[11] + '</div>';

                            return row_data.aData[2] + excerpt_div + control_div;
                        }
                },
                {'fnRender': function(row_data) { return row_data.aData[3] }},
                {'fnRender': function(row_data) { return row_data.aData[4] }},
                {'fnRender': function(row_data) { return row_data.aData[5] }},
                {'fnRender': function(row_data) { return row_data.aData[6] }},
                {'fnRender': function(row_data) { return _featured_small_image(row_data.aData[12]) }},
                {'bVisible': false},
                {'bVisible': false},
                {'bVisible': false},
                {'bVisible': false},
                {'bVisible': false}
            ]
    });

问题是当从数据源中删除项目时,分页信息不会更新。

我做了测试:

console.log(ListLone_datatable.fnGetData());

一切似乎都井然有序。更新的项目列表是正确的。表中显示的是正确的项目,而不是分页信息。例如,如果a每页显示5个项目5个,则在删除一个项目后,该表格显示两个页面,第二个页面为空,文本显示为“显示6个条目中的1到5个”。 (当然重装后)。它似乎保留了表/分页的初始状态。如果切换到另一个新的分页设置(如每页6个),它似乎将其初始状态更新为正确的状态,但仍然无效。

更新其信息的唯一方法是执行列排序。然而,这在重装时会丢失。是什么导致这种情况?

3 个答案:

答案 0 :(得分:0)

您可以再次调用jQuery('#my_table')。dataTable()函数来更新表。您可能需要传递自定义参数,以保留任何更改或对表数据进行动态添加/编辑。

答案 1 :(得分:0)

Datatables有一个函数调用fnDraw(),一旦删除了它依赖的数据,它就会为你重绘表。

$('#my_table').fnDraw()

答案 2 :(得分:0)

尝试强制"bStateSave": false