2

我正在使用 ajax 更新我的表,该过程与数据表无关,我想执行表刷新

$('#listing').dataTable( {
        "bDestroy": true,
            "bProcessing": true,
    "sAjaxSource": "getlist/",
            "bJQueryUI": true,


            "aoColumns": [
                    { "mDataProp": "id" },      
        { "mDataProp": "aname" },           
        { "mDataProp": "acode" },
        { "mDataProp": "editlink" },
                    { "mDataProp": "deletelink" },

    ],
            "aoColumnDefs": [ 
                    { "bSearchable": false, "bVisible": false, "aTargets": [ 0 ] }

    ]



} );

我的数据被定制为显示为{"aaData":[{"id":"14",并且工作良好,因为正在呈现表格。

4

2 回答 2

0

您可以通过调用fnDraw()方法更新数据表。但是,只有在设置时,数据表才会再次从实际数据源(在您的情况下为 Ajax URI)读取数据bServerSide: true(通过它您告诉数据表所有处理都在服务器端完成)。

一个副作用bServerSide: true是您需要在 Ajax 响应中发送分页详细信息(iTotalRecords 和 iTotalDisplayRecords,..)和其他数据(请参阅服务器端处理文档)。

其他副作用是过滤将不再起作用:( Datatable 无法过滤它拥有的部分数据。

于 2011-08-25T13:58:49.423 回答
0

DataTables 在 API 中有一个 fnReloadAjax 函数,您可以将其粘贴到脚本中:fnReloadAjax。而且您也不需要启用服务器端处理即可。

不过需要注意的是:如果您计划合并重复刷新(即表格每 10 秒刷新一次以显示“实时”数据),最好的方法是定期识别来自 AJAX 源的修改数据(也许通过比较在您的记录中“修改”时间戳)并使用fnAddData添加/更新/删除这些行。对于客户端而言,这将比每次重新加载整个数据集更便宜。

于 2012-03-01T03:59:04.973 回答