【发布时间】:2017-01-11 23:32:04
【问题描述】:
我创建了一个自定义下拉列表来过滤特定数据表列中的值。当我尝试使用所选值过滤\搜索列时,数据表保持不变。
数据表和过滤事件:
var table = $('#dt');
var dt = table.DataTable({
ajax: {
type: 'POST',
cache: false,
url: '/DataTablesHandler'
},
columns: [
{
data: 'idLevel',
orderable: false,
targets: 'no-sort',
searchable: true
},
{ data: 'email' },
{ data: 'phone' },
{ data: 'fax' }
],
order: [0, 'asc'],
processing: true,
serverSide: true,
orderMulti: false,
bStateSave: true
});
//filter search on entity level change
$('#workEntityLevel').on('change', function ()
{
var levelID = $(this).val();
if (levelID == 0)
{
//clear search
dt.search('').columns().search('').draw();
}
else
{
//search idLevel column (NOT WORKING!!!)
dt.columns(0).search(levelID).draw();
}
});
我做错了什么?
【问题讨论】:
-
该列(级别id)的数据对象中的数据是整数还是字符串?
-
.val()总是返回string value. -
@bindrid 是一个数字值(1、2、3、4、5 和 6)。但我已经测试过它强制一个字符串值,结果是一样的。
-
@Ricky 如果您要创建一个小提琴,它会更容易帮助您。
-
我尽可能使用我设置的表格测试了您的代码。它没有问题。所以,我想知道“缓存:假”和您的 ajax 设置是否导致 dt 期望搜索应用于服务器端。每次更改下拉菜单时,我都会检查是否触发了 ajax 调用。
标签: jquery datatables datatables-1.10