如何在DataTables初始化后定义Columndef

时间:2016-05-19 19:28:23

标签: datatables datatables-1.10

目前我在每个页面中使用DataTables,就像这样单独初始化它们。

 var table = $('#' + '<%= gvReports.ClientID %>').DataTable({
                "responsive": true,
                "bAutoWidth": true,
                "oLanguage": {
                    "sSearch": "Search Table: ",
                    "sSearchPlaceholder": "Search records",
                    "sEmptyTable": "No data available to display"
                },
                "columnDefs": [
                    {
                        "targets": [0],
                        type: 'natural-nohtml'
                    }
                ],
                "sScrollY": "55vh",
                "scrollCollapse": false,
                "pagingType": "full_numbers",
                "lengthMenu": [[25, 50, 100, 150, 200], [25, 50, 100, 150, 200]]
            });

当我尝试创建一个在多个地方使用的通用JQuery方法时,columnDef中的type属性无法正常工作

"columnDefs": [
                 {
                     "targets": [0],
                      type: 'natural-nohtml'
                 }
              ],

我使用NatualSort插件对数据进行排序,因为列'0'包含字母数字数据。

有没有办法可以动态设置columnDefs?或者在初始化表后设置Column(0)的ColumnDef类型? 喜欢的东西

table.column("0:visible").Type('natural-nohtml');

感谢任何帮助?我想知道我是否正确思考?

1 个答案:

答案 0 :(得分:1)

在初始化dataTable之后,您无法操纵columnDefs 。但是,当您基本上只想为任何dataTable的第一列设置natural-nohtmltype时,您只需扩展$.fn.dataTable.defaults即可。在初始化任何dataTable之前声明这个:

$.extend( true, $.fn.dataTable.defaults, {
  columnDefs: [
    { targets: [0], type: 'natural-nohtml' }
  ]
} );

这将设置任何dataTables&#39;第一列键入natural-nohtml