datatable 局部刷新之单元

需求:

  1.对某一列进行动态更新。

      2.不能对表格状态更改,如选中状态、当前页数、筛选等。

这样我们使用 draw 、ajax.reload 等都不能满足第二个需求。幸好发现一个api  cell().data() 可以实现上面的需求。对此进行了封装来满足需求。

解决:

$.fn.dataTable.Api.register( 'partUpdate', function (col) {
    var api = this;
    var Sdata = api.data().data()
    $.ajax({
        url: api.ajax.url(),
        data: api.ajax.params(),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        type: 'post',
        success: function (resp) {
            var data = resp.data;
            var error = resp.error;
            if (error!=null || error!=undefined){
                alert(error)
                return false;
            }
            var field = table.column(col).dataSrc()
            $.each(Sdata, function(index, Sitem){
                $.each(data, function(_i, item){
                    if(item!=undefined && item.id==Sitem.id){
                        if (Sitem[field]!=item[field]){
                            table.cell( index, col ).data(item[field])
                        }
                        delete data[_i]
                        return false;
                    }
                })
            })
        }
    })
} );

我们注册api partUpdate,在内部ajax 访问数据源,将得到数据和原来数据进行对比,然后进行单元格更新。

测试效果图:

猜你喜欢

转载自www.cnblogs.com/apuyuseng/p/12382538.html