javascript - 如何在数据表中启用对隐藏列的搜索?
我有一个包含姓名列的表格,但我不想在表格中显示该列,但我需要在其上添加搜索过滤器。
我尝试使用以下方法,但在这种情况下,搜索过滤器的列和文本框都没有显示。
{
"sName": "Name",
"bVisible": false,
"bSearchable": true
}
当我设置 "bVisible": true 时,过滤器和列的文本框都显示出来,并且搜索也能正常工作。
我正在使用以下代码来显示列过滤器。
筛选用 HTML:
<div class="col-xs-12 col-sm-6 col-md-4">
<div class="form-group">
<label class="col-sm-5 control-label">Customer Name </label>
<div class="col-sm-7" id="serName"></div>
</div><!-- form-group -->
</div>
表格的 HTML :
Datatable 更新后的 Javascript:
$(document).ready(function () {
dTable = $('#exRowTable').dataTable({
iDisplayLength: 10,
sAjaxSource: AjaxSource,
aoColumns: [
// {"sName": "Name", "bVisible": false, "bSearchable": true, "aTargets": [7]},
{"sName": "Name"}
],
aoColumnDefs: [
{
"bSearchable": true,
"bVisible": false,
"aTargets": [ 7 ]
}
],
"aaSorting": [[0, 'desc']],
sPaginationType: "full_numbers"});
$('#exRowTable').dataTable().columnFilter({
//sPlaceHolder: "head:after",
aoColumns: [
{type: "date-range", sSelector: "#serPickupDate"},
{type: "text", sSelector: "#serCustId"},
null,
null,
null,
null,
null,
{type: "text", sSelector: "#serName"}
],
bUseColVis: true
});
});
答案#1
使用 DataTables 1.9.4 版本,这可以工作(jsFiddle)
$('#example').dataTable( {
"aoColumnDefs": [
{
"bSearchable": true,
"bVisible": false,
"aTargets": [ 2 ]
},
]
});
也许你漏掉了 aTargets 参数?如果你使用的是 aoColumns 而不是 aoColumnDefs,数组长度需要等于列数(文档)。我不确定 sName 参数是否会影响它的工作方式...
编辑(以回答更详细的问题):
我猜(根据在这里尝试复制你的问题)是 columnFilter 插件没有起作用。如果你有隐藏的列,你必须将 bUseColVis 参数设置为 true(文档)。像这样:
$('#exRowTable').dataTable().columnFilter({
//sPlaceHolder: "head:after",
aoColumns: [
{ type: "date-range", sSelector: "#serPickupDate" },
{ type: "text", sSelector: "#serCustId" },
null,
null,
null,
null,
null,
{ type: "text", sSelector: "#serName"},
{ type: "select", sSelector: "#serTimeslotsId", values: TimeSlotsDP},
{ type: "select", sSelector: "#serPickUpPin", values: PincodeDp },
{ type: "select", sSelector: "#serDeliveryPin", values: PincodeDp },
{ type: "date-range", sSelector: "#serRequestDateTime" },
{ type: "select", sSelector: "#serPickedUpStatus", values: ['Yes','No'] },
{ type: "select", sSelector: "#serStaffUser", values: StaffUserDp }
],
bUseColVis: true
});
答案#2
你也可以通过在特定列上搜索来做到这一点:
$("#table").DataTable().column(0).data().search("example");
因为我们已经链式调用了 .data(),即使将可见性设置为 false,这也将允许对第 0 列进行索引。
如果你只想在可见列上搜索,那么就省略 .data()。
