仅根据DataTables中第一列的下拉值筛选表数据
filter table data based on drop down values of first column only in DataTables
下面介绍了为数据表网站上提到的所有列选择选项的功能。我如何使它只在第一列的下拉列表值上过滤表数据,并将选择下拉列表放在其他地方,而不是通常的标题部分。参见例如的链接
initComplete: function () {
var api = this.api();
api.column().indexes().flatten().each( function (i) {
var column = api.column(i);
var select = $('<select><option value=""></option></select>').appendTo('$selectTriggerFilter').on( 'change', function () {
var val = $.fn.dataTable.util.escapeRegex($(this).val());
column.search( val ? '^'+val+'$' : '', true, false ).draw();
} );
column.data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
} );
} );
}
我正在使用以下代码。一旦我删除了dom选项,选择选项就会出现,但不是没有dom。
$(document).ready(function() {
$('#tableTrigger').DataTable({
"lengthMenu": [ [10, 25, 50, 100, -1], [10, 25, 50, 100, "All"] ],
searching: false,
"scrollY": "200px",
"dom": 'frtipS',
"deferRender": true,
initComplete: function ()
{
var api = this.api();
api.columns().indexes().flatten().each( function ( i )
{
if(i == 0){ //Create just one SelectBox
var select = $('<select class='+i+'><option value=""></option></select>')
.appendTo( '#selectTriggerFilter')
.on( 'change', function () {
var val = $(this).val();
column( i ).search( val ? '^'+$(this).val()+'$' : val, true, false ).draw();
});
column( i ).data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' );
} );
}
else return;
});
}
});
});
原因
你的代码有一些问题:
searching
不应设置为false
,否则search()
功能将不起作用- 未定义
column
变量
解决方案
以下是已更正的代码。
$(document).ready(function() {
$('#tableTrigger').DataTable({
"lengthMenu": [
[10, 25, 50, 100, -1],
[10, 25, 50, 100, "All"]
],
"scrollY": "200px",
"dom": 'rtipS',
// searching: false,
"deferRender": true,
initComplete: function () {
var column = this.api().column(0);
var select = $('<select class="filter"><option value=""></option></select>')
.appendTo('#selectTriggerFilter')
.on('change', function () {
var val = $(this).val();
column.search(val ? '^' + $(this).val() + '$' : val, true, false).draw();
});
column.data().unique().sort().each(function (d, j) {
select.append('<option value="' + d + '">' + d + '</option>');
});
}
});
});
票据
我在
"dom": 'frtipS'
中省略了f
,因为我认为您最初想通过将searching
设置为false
来排除它。如果您希望在下拉筛选器中包含搜索框,请包含f
。如果在
dom
属性中省略了l
,则设置lengthMenu
是没有意义的。
演示
请参阅此jsFiddle以获得更正代码的演示。
您可以将搜索部分放在dom中的任何位置。然后您的事件调用(单击、选择、向上键)。如下所示调用serachapi。
var dTable= $("example").DataTable();
dTable.columns(i).search(v).draw();
这里i是您的数据表列索引,v是搜索值。
相关文章:
- Telerik rad组合框多列数据绑定
- 柱状图后面的一列
- 数据表通过分析一列的值对其进行排序
- Datatables-如何在未显示所有列的情况下禁用表中最后一列的排序
- 获取表中每行的一列的内容,然后循环访问每个内容
- 对象数组-与其他列数据相比,增加一列
- 如何隐藏除最后一列之外的数据网格列
- 问题是最后一列的平均值总和-从JSON解析的数据-Angular JS
- 剑道网格 - 如何使网格默认按一列显示分组数据 (init)
- 如何获取一列中有多少单元格具有数据的值
- 可手持-通过ajax获取数据,并在一列上设置自动完成
- 富数据表突出显示JSF中的一列,并且一次只突出显示一列
- JQuery数据表排序前一列
- 根据另一列中的字符串中的数据查找行号
- 如何将数据放在一列中
- 谷歌可视化:如何从数据表中删除一列
- 从一列中抓取数据,并将结果传递给它旁边的列
- 数据表-最后一列固定宽度
- jQuery数据表插件,动态创建的最后一列平均在fnRowCallBack是不可排序的
- 在jquery数据表的某一列中,行单击时进行行选择,而在超链接单击时不进行行选择