PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > Jquery教程 > 正文

    jQuery DateTables插件olumns.render和columnDefs.render的区别 - Datatables中文网

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:其实这个的区别,归根到底是columns和columndefs的区别,它们两个的区别就有columns先执行,columnDefs后执行columnDefs比columns多一个属...
    其实这个的区别,归根到底是columns和columndefs的区别,它们两个的区别就有

    columns先执行,columnDefs后执行
    columnDefs比columns多一个属性 columnDefs.targetsDT
    有了这个属性就可以做很多columns做不到的事情

    希望大家可以补充下,大家一起学习

    针对第一点:

    每一次DataTable的是重绘或者重载都会后台执行很多回调函数 更多参考

    columns.render是在createdRow前执行的 columnDefs.render是在rowCallback后执行的

    就会导致columnDefs.render执行的时候其实tr已经全部渲染出来的,大家就可以对全局做一些操作了, 如合并单元格、根据某个tr里面td改变另一个tr里面的td的渲染了等等

    针对第二点:

    就可以使一个columnDefs.render对应多个列了,或者在没有创建columns的时候使用,更加灵活,columns.render一对一的更加有针对性

    两个option都有自己的特点,各有千秋,大家根据自己需求使用对应的option,祝大家对dt使用的更加得心应手!

    下面是本节的完整代码:

    1. <!DOCTYPE html> 
    2. <html xmlns="http://www.w3.org/1999/xhtml"
    3.  <head> 
    4.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    5.   <title></title> 
    6.   <link href="DataTables/css/jquery.dataTables.min.css" rel="stylesheet" /> 
    7.  </head> 
    8.  <body> 
    9.   <script src="DataTables/js/jquery.js"></script> 
    10.   <script src="DataTables/js/jquery.dataTables.min.js"></script> 
    11.   <table id="example"
    12.   </table> 
    13.   <script> 
    14.         Date.prototype.Format = function (fmt) { //author: meizz 
    15.             var o = { 
    16.                 "M+"this.getMonth() + 1, //月份 
    17.                 "d+"this.getDate(), //日 
    18.                 "h+"this.getHours(), //小时 
    19.                 "m+"this.getMinutes(), //分 
    20.                 "s+"this.getSeconds(), //秒 
    21.                 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 
    22.                 "S"this.getMilliseconds() //毫秒 
    23.             }; 
    24.            if (/(y+)/.test(fmt)) { 
    25.                fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 
    26.            } 
    27.            for (var k in o) { 
    28.                if (new RegExp("(" + k + ")").test(fmt)) { 
    29.                    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 
    30.                } 
    31.            } 
    32.            return fmt; 
    33.         } 
    34.  
    35.         var id = ""
    36.         var oTable = $("#example").DataTable({ 
    37.             "serverSide"true
    38.             //分页,取数据等等的都放到服务端去 
    39.             "deferRender"true
    40.             //当处理大数据时,延迟渲染数据,有效提高Datatables处理能力 
    41.             "destory"true
    42.             "ajax": { 
    43.                 "dataType"'json'
    44.                 "type""POST"
    45.                 "url""/GridSheet/dataGridData"
    46.                 "data"function(d) { 
    47.                     d.id = id; 
    48.                 }, 
    49.                 "async"false 
    50.             }, 
    51.             "columns": [{ 
    52.                 "data""id"
    53.                 "width""100px"
    54.                 "title""id" 
    55.             }, 
    56.             { 
    57.                 "data""name"
    58.                 "width""150px"
    59.                 "title""姓名" 
    60.             }, 
    61.             { 
    62.                 "data""birthday"
    63.                 "width""200px"
    64.                 "title""生日"
    65.                 render: function(data, type, row, meta) { 
    66.                     //先讲 时间格式化 
    67.                     //这类问题主要给大家讲逻辑,因为都是类似的问题,类似的解决方案 
    68.                     //最基础的解决方案: 一、直接在数据源就格式化为常见的格式(sql或者后台代码格式化);二、在dt里面格式化; 
    69.                     //在js格式化时间的三种方式,我这里示范一种 
    70.                     //具体方法的链接:http://www.cnblogs.com/zhangpengshou/archive/2012/07/19/2599053.html 
    71.                     return (new Date(data)).Format("yyyy-MM-dd hh:mm:ss"); //date的格式 Thu Apr 26 2016 00:00:00 GMT+0800 
    72.                 } 
    73.             }, 
    74.             { 
    75.                 "data""a"
    76.                 "width""350px"
    77.                 "title""a"
    78.                 render: function(data, type, row, meta) { 
    79.                     //然后是 内容太多用。。。。表示、内容不换行,鼠标移上去显示详情 
    80.                     //这类问题最简单的肯定是使用css解决 
    81.                     //    //1. table-layout: fixed 由于table-layout的默认值是auto, 
    82.                     //即table的宽高将取决于其内容的多寡,如果内容的体积无法估测,那么最终表格的呈现形式也无法保证了, 
    83.                     //fixed一下就好了。(注意:此样式是关键) 
    84.                     //    //2. white-space: nowrap 是为了保证无论单元格(TD)中文本内容有多少, 
    85.                     //都不会自动换行,此时多余的内容会在水平方向撑破单元格。 
    86.                     //    //3. overflow: hidden 隐藏超出单元格的部分。 
    87.                     //    //4. text-overflow: ellipsis 将被隐藏的那部分用省略号代替。 
    88.                     //这4个css样式都可以百度出来的,第一个是写在table标签里面的,2、3、4写在td里面 
    89.                     //假设这个tomuchcontent 就是本列的值 data 
    90.                     var tomuchcontent = "asdasdaddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
    91.                     //我这里做个简单的示范 
    92.                      return '<div id="a" style="width:100px;height:100px;overflow: hidden;text-overflow: ellipsis;" '
    93.                             'title="‘+tomuchcontent +’">‘+tomuchcontent +’</div>'
    94.                } 
    95.             }, 
    96.             { 
    97.                 "data"null
    98.                 "width""350px"
    99.                 "title""b"
    100.                 render: function(data, type, row, meta) { 
    101.                     //最后一个 同时显示多个列的内容 
    102.                     //我对这个问题的理解是 比方我有两个字段需要同时显示在一个td里面,或者一个td里面有两个按钮 
    103.                     //这个columns.data就完全可以给null了,相应的columns.render().data这里就也是null 
    104.                     //按钮的就是自己在里面拼click事件以及对应的按钮样式了 
    105.                     //return '<a href="javascript:void(0);" onclick="del("'+row.id+'")">' + 删除 
    106.                     //            + '</a><a href="javascript:void(0);" onclick="mod("'+row.id+'","'+row.name+'")">' + 编辑 + '</a>'; 
    107.                     return '<label>' + row.id + '</label>  <label>' + row.name + '</label>'
    108.                 } 
    109.             }] 
    110.         }); 
    111.     </script> 
    112.  </body> 
    113. </html> 

     

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-47-5691-1.html
    相关热词搜索: jQuery插件 DateTables