JQuery的数据表排序的列内的选择(JQuery Datatables sorting a sel

2019-09-28 03:11发布

我使用的数据表1.10.12和JQuery 1.12.3

我得到了与排序的列在它里面下拉列表中的问题

我现在用的是多选择滤波器。

所有工作正常,概率是它不能排序可能是因为在MULTI_SELECT选项变量的值,我不知道如何填写,包括选择(已选定=“选择”选项)列

所以,我怎么能实现TD内进行搜索,可能与正则表达式,发现这些选择的选项?

Answer 1:

可以使用columnDefs靶向在使用基于零的索引的特定列targets选项并render搜索期间返回选定的值( type === 'filter' )或排序( type === 'order' )。

var table = $('#example').DataTable({
   columnDefs: [
      { 
         targets: [0,1,2,3], 
         render: function(data, type, full, meta){
            if(type === 'filter' || type === 'sort'){
               var api = new $.fn.dataTable.Api(meta.settings);
               var td = api.cell({row: meta.row, column: meta.col}).node();
               data = $('select, input', td).val();
            }

            return data;
         }
      }
   ],
   // ... skipped ...
});

上面的代码使用的值option元素,以确定值进行排序/搜索。 然而,在更新的例子,你正在使用数字ID作为值。

要使用的文本option ,而应使用如下所示修改后的代码:

var table = $('#example').DataTable({
   columnDefs: [
      { 
         targets: [0,1,2,3], 
         render: function(data, type, full, meta){
            if(type === 'filter' || type === 'sort'){
               var api = new $.fn.dataTable.Api(meta.settings);
               var td = api.cell({row: meta.row, column: meta.col}).node();
               var $input = $('select, input', td);
               if($input.length && $input.is('select')){
                  data = $('option:selected', $input).text();
               } else {                   
                  data = $input.val();
               }
            }

            return data;
         }
      }
   ],
   // ... skipped ...
});

还需要一次无效数据变化的单元数据(如,如下所示该溶液 )。

$('tbody select, tbody input', table.table().node()).on('change', function(){
     table.row($(this).closest('tr')).invalidate();
});

DEMO

见更新的例子代码和演示。



文章来源: JQuery Datatables sorting a select inside a column