dataTable的当前页面刷新draw操作

vue datatables 实现动态刷新 需求描述:最近需要写一个界面,主要功能是实现模态框的动态刷新 问题:可是涉及到自动刷新就有问题了,因为每次获取数据都是全量数据,用dataTable组装表格的话,页面会一直一直闪!里面绘制的表格会不断出现异常 如图这个是我做好的动态刷新,下面的请求是每隔5秒刷新一次,解决问题的主要方法如下(最终解决方法是在datatables的API 中找到的): <templa... 阅读详情

dataTable当前页刷新实现

talk is cheap,let’s show the code:
var table = $('#example').DataTable();
// Sort by column 1 and then re-draw
table.draw( false );

很简单,将false参数传入draw方法中即可实现当前页刷新。别问我怎么知道的,这个问题曾经卡了我很长一段时间,直至后来想到,该框架的设计者肯定考虑到此类问题,必然也会给予解决方案,于是终于在官方文档中找到了想要的答案。我列个擦,想了好长时间的问题,竟然就是这样.draw(false)简单地解决了。

当渲染表格时,想象一种场景。在table的20页时,我们需要对表格中的某一行数据执行一定的操作,譬如标记。标记这个操作会弹出一个模态框,操作执行完成并回到当前页后,理想情况下,当前的这一行数据应该显示最新更改后的数据。这是最正常不过的应用场景了。假如你用的不是框架集成的,嗯,你确实可以采取全局变量记住当前页的请求参数,然后再发一次请求。然而,假如你用的是dataTable做的分页实现,那么我告诉你,你有福了!
  • 先贴出代码
var _table = $table.dataTable($.extend(true, {},
        CONSTANT.DATA_TABLES.DEFAULT_OPTION, {
            ajax: function (data, callback, settings) {//ajax配置为function,手动调用异步查询
                //封装请求参数
                var param = userManage.getQueryCondition(data);
                $.ajax({
                    type: "GET",
                    url: "/markMaster/listArray",
                    cache: false,   //禁用缓存
                    data: param,    //传入已封装的参数
                    dataType: "json",
                    success: function (result) {
                        if (result.errorCode) {
                            alert("查询失败。错误码:" + result.errorCode);
                            return;
                        }
                        var returnData = {};
                        returnData.draw = data.draw;
                        returnData.recordsTotal = result.total;
                        returnData.recordsFiltered = result.total;
                        returnData.data = result.pageData;
                        //调用DataTables提供的callback方法,代表数据已封装完成并传回DataTables进行渲染
                        //此时的数据需确保正确无误,异常判断应在执行此回调前自行处理完毕
                        callback(returnData);
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert("查询失败");
                    }
                });
            },
            columns: [
                {
                    data: "id",
                    render: CONSTANT.DATA_TABLES.RENDER.ELLIPSIS
                },
                {
                    data: "mid",
                    render: CONSTANT.DATA_TABLES.RENDER.MID
                },
                {
                    data: "name",
                    render: CONSTANT.DATA_TABLES.RENDER.UNAME
                },
                {
                    data: "tag",
                    render: CONSTANT.DATA_TABLES.RENDER.TAG
                },
                {
                    data: "cooperateStatus",
                    render: CONSTANT.DATA_TABLES.RENDER.COOPERATE
                },
                {
                    data: "signStatus",
                    render: CONSTANT.DATA_TABLES.RENDER.SIGN
                },
                {
                    data: "mark",
                    render: CONSTANT.DATA_TABLES.RENDER.ELLIPSIS
                },
                {
                    data: null,
                    defaultContent: "",
                    orderable: false,
                    width: "120px"
                },
                {
                    data: null,
                    defaultContent: "",
                    orderable: false,
                    width: "120px"
                }
            ],
            "createdRow": function (row, data, index) {
                if (data.role) {
                    $(row).addClass("info");
                }
                //给当前行某列加样式
                $('td', row).eq(3).addClass(data.status ? "text-success" : "text-error");
                //不使用render,改用jquery文档操作呈现单元格

                var edit = '<button type="button" class="btn btn-primary btn-edit">编辑</button>';
                var $option = $('<div>'+edit+'</div>');
                var $btnData = $('<button type="button" class="btn btn-small btn-primary btn-data">数据</button>');
                $('td', row).eq(-1).append($option);
                $('td', row).eq(-2).append($btnData);
                var a = "";
            }
        })).api();

<!--组装的查询参数部分-->
getQueryCondition: function (data) {
        var param = {};
        //组装排序参数
        if (data.order && data.order.length && data.order[0]) {
            switch (data.order[0].column) {
                case 1:
                    param.orderColumn = "id";
                    break;
                case 2:
                    param.orderColumn = "mid";
                    break;
                case 3:
                    param.orderColumn = "name";
                    break;
                case 4:
                    param.orderColumn = "tag";
                    break;
                case 5:
                    param.orderColumn = "cooperateStatus";
                    break;
                case 6:
                    param.orderColumn = "signStatus";
                    break;
                case 7:
                    param.orderColumn = "mark";
                    break;
                default:
                    param.orderColumn = "id";
                    break;
            }
            param.orderDir = data.order[0].dir;
        }
        //组装查询参数
        param.openSearch = userManage.openSearch;
        if (userManage.openSearch) {
            param.uid = $("#uid").val();
            param.nickName = $("#nickName").val();
            param.tag = $("#tag").attr('item');
        }
        //组装分页参数
        param.startIndex = data.start;
        param.pageSize = data.length;
        param.draw = data.draw;
        return param;
    }

显然,请求参数是封装在dataTable里面的,我们要取出不难,但是想要在刷新的时候再注入就很麻烦了.当初遇到这个槛时真是百思不得解。想过几种解放方案都被自己给否定了,直到后来。。。直接在执行完操作代码的后面添加上_table.draw(false),然后你就可以实现执行完操作的当前页刷新了~喜大普奔

基于gem5模拟trace的cache模拟器的实现 在做计算机体系结构的候,模拟器是一个重要且又有效的工具。其中gem5集成了gem和m5的优点,使用起来比较简单和方便。其中包括了se模式和fs模式,se模式是在gem5运行我们已经编译好的程序,可以获取cache,cpu状态等数据,fs模式下可以模拟操作系统,我们可以将我们自己修改的linux内核加载到哥们上运行。下面介绍了使用gem5的se模式,运行编译好的ARM可执行文件。获取访存的trac 阅读详情

相关推荐

vsomeip3 双机通信文件配置

验证环境 vsomeip地址Android运行命令,红色的地方需要和配置文件一样Linux运行命令,红色的地方需要和配置文件一样Linux service配置文件 ,红色的地方需要更改Android client配置文件,红色的地方需要更改,蓝色的地方可不要 ...

m0_37132481的博客 5178

dataTables 使用方式 (draw:刷新当前页 reload: 重新加载页码为1)

$(document).ready(function(){ table= $('#user_table').DataTable({ "paging": true, "ordering":false,//排序 "aLengthMenu": [10, 25, 50],//设置页码 "searching":false, "serverSide": true,//必须存在...

weixin_30466953的博客 983

基于深度学习YOLOv8框架训练玻璃表面缺陷检测数据集从零开始安装依赖库准备数据集配置模型参数进行训练和评估以及构建PyQt5图形用户界面实现玻璃瑕疵检测识别点状缺陷划痕缺陷擦.zip

基于深度学习YOLOv8框架训练玻璃表面缺陷检测数据集从零开始安装依赖库准备数据集配置模型参数进行训练和评估以及构建PyQt5图形用户界面实现玻璃瑕疵检测识别点状缺陷划痕缺陷擦.zip

DataTable使用01-介绍与绘制

开篇 之前有项目使用datatable进行页面表格绘制,减轻了整体开发的难度,因为项目需求并没有需要对datatable做过于深入的了解,所以,现在重新学习理解并记录,以便后续开发有参考,提高开发效率。 本文将通过实例演示记录表格绘制各个过程的方法,包括但不限于数据引入、绘制图表、样式调整、国际化设置、自定义功能方法等。本文将竟可能的将datatable的使用全面细致的体现出来,如前期有遗漏后续进...

qq_41751699的博客 343

Mybatis pageHelper 配合jquery DataTable实现分页效果

Hibernate中集成了分页的后台方法,Mybatis中没有,想要方便的使用分页功能,就必须使用牛人开发的pageHelper插件。前台配合jquery的datatable或者jqGrid实现列表效果,本次使用的是datatable。 首先想看官方详细文档请看,非常全面 http://datatables.club/ 另外我找到一片非常详细的介绍datatable的文章 http...

lianzhang861的博客 3717

jquery datatables api (转)

学习可参考:http://www.guoxk.com/node/jquery-datatables                       http://yuemeiqing2008-163-com.iteye.com/blog/2006942   1:导入包:     URL:http://www.datatables.net/    分别导入css和js文件 &lt;sty...

c692088846的专栏 654

Datatables插件的使用(从前台到后台完整流程)

目录Datatables插件的使用1.下载Datatables2. 引入jQuery和Datatables的Js3.在前端JS代码中初始化Datatables对象4. 在后台接收参数并返回数据带条件查询效果 Datatables插件的使用 1.下载Datatables 官网 中文网 2. 引入jQuery和Datatables的Js <!-- jQuery 3 --> <scri...

zhangyuanshuai的博客 3617

dataTable的页面刷新操作

页面初始化DataTable候,请求参数往往是封装在dataTable里面的,刷新表格数据的候重新注入参数会很麻烦。 版主碰到这个问题后,试过了很多方法,最终还是在官方API例找到了例子,即draw()方法。具体代码如下: draw() var table = $('#example').DataTable();

qcp1020的博客 1万+

datatable分页的情况下,实现刷新后不跳转到第一页

假如是在第三页点击某个操作,比如说编辑,跳转到编辑页面,编辑完保存后,又跳转至第三页并且刚刚修改的数据刷新了,这种情况就别看了,我也没找到解决办法。 如果是在本页面通过模态框,弹出框的方式修改数据,则可以使用oTable.draw(false); 比如通过复选框多选之后,通过弹出框进行指派,ajax执行成功之后,写上一句oTable.draw(false);就可以实现当前页刷新数据 ...

菜鸟日记 2464

DataTable刷新列表,但不刷新页面

当使用DataTable做删除等操作会有刷新列表,但不刷新页面的情况 此调用loadTable();,而不是location.reload(); function refreshTable(){ $('#dataSet_table').dataTable().fnDestroy(); loadTable(); }; //location.reload(); if(data

做个快乐的女工 4909

jQuery datatable获取当前页面刷新保存在当前页面

页面代码 //删除 function delProductModel(id){ layer.confirm('您确定要删除吗?', function(){ $.post("/ProductModle/delProductModel", { productId: id},function(data){ if(data.code == 200){ layer.msg(data

Nightliar的博客 8115

jquery.dataTable刷新数据

```javascript var table = $('#datatable').DataTable(); table.draw(false); //刷新一页 table.ajax.load() //整个刷新

weixin_45663625的博客 2396

datatable 服务端分页

首先你需要后端给你的数据格式必须是这样: 参数名也必须是 :  draw    页数 recordsTotal:总条数 recordsFiltered:总条数      recordsTotal和recordsFiltered必须都是总条数,不然分页只能是一页  data:数据   前端 js代码: var lenPage=0    全局显示条数,默认为10 $(functi...

qq_33646205的博客 3885

datatable分页的情况下 如何实现重新加载当前页信息

这个蛋疼的问题 可谓是相当有趣 需求:在第二页修改或者编辑内容完成后,重新加载页面(局部刷新),希望留在本页面中 ,即第二页! 一开始以为要往后台传输 当前页  ,数据起始行数  即limit  start,size  这个两个信息 结果写了两个小都不好使 ,最后去官网一看 ,奶奶的,直接想砸电脑的冲动有木有 官网: var table =

积累点滴、持续总结、进而成长 1万+

jquery.Datatables页面刷新

jquery.Datatables页面刷新 jquery.Datatables页面刷新 1.执行操作刷新表格,停留在当前页面 1.1 场景 1.2 解决方法 1.3 参考文档 2.状态保存 2.1 场景 2.2 解决方法 2.3 参考文档 3.不需要保存状态的页面跳转 3.1 场景 3.2 解决方法 3.3 参考文档 1.执行操作刷新表格,停留在当前页面...

u012512634的专栏 6690

dataTabley页面局部刷新

最近客户提出一个需求,当编辑完信息的候页面只进行局部刷新(只刷新列表,之前输入的查询条件不进行刷新),不要全局刷新,如果你是用dataTable做的非常简单就能轻轻松松搞定,只需要在将之前的 table.ajax.reload();//全局刷新 改成 table.draw(false);即可 是不是感觉有点~~~~ 原文参考链接:https://blog.csdn.net/justno...

JerryBal的博客 944

datatable实现数据静态加载不刷新

第一种 bStateSave : true 第二种 $('#tab2DealTable').dataTable().fnDraw(false); 第三种(自己获取页码点击去吧)  function getValue() { var oTable = $('#violist').dataTable(); var oSettings = oTable.

God天的博客 1649

datatable重新加载ajax数据库,dataTables.js 重新加载数据

在使用dataTables的候,实现自定义搜索后,请求了新的数据,但列表却没有刷新,百度/Bing了很多解决方法,基本是集中在两种:方法 1:dataTable.ajax.reload().draw();方法 2:dataTable.fnClearTable();dataTable.fnDraw();但是我一开始使用的候,两种方法都不行,而且第二种还会报错。排查原因后,发现,dataTable...

weixin_39902545的博客 1149

JQuery datatable 刷新

Parameter: fnDraw Type: function Inputs: {bool} [default=true]: Re-filter and resort (if enabled) the table before the draw.https://datatables.net/apithe explanation forf...

weixin_34258838的博客 178

Datatables】重新渲染及刷新当前页

1、重新渲染,销毁Datatables实例(destroy)例如,操作成功后,刷新父级页面的table当前页数据。2、刷新当前页,dt.draw(false)使用场景:新增、修改、删除记录后需刷新当前页。适合Javascript数据源方式。适合Ajax数据源方式。

i730443655的博客 1241

关于JqueryDataTable的数据刷新

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34292924的博客 1147
上一篇: http请求过程分析
下一篇: spring-AOP1
Justnow_
博客等级 码龄11年 63粉丝 42原创
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值