如何启用对数据表中隐藏列的搜索?

TIG*_*GER 6 javascript datatable jquery

我有包含一Name列的表,但我不想在表中显示该列,但我需要在其上添加搜索过滤器。

我尝试使用下面的,但在这种情况下,搜索过滤器的列和文本框都没有显示。

{
    "sName": "Name", 
    "bVisible": false, 
    "bSearchable": true
}
Run Code Online (Sandbox Code Playgroud)

当我设置"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>
Run Code Online (Sandbox Code Playgroud)

表格的 HTML :

更新后的数据表 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
    });

});
Run Code Online (Sandbox Code Playgroud)

Áng*_*ela 4

对于 DataTables 1.9.4 版本,此功能有效 ( jsFiddle )

$('#example').dataTable( {
    "aoColumnDefs": [
        { 
            "bSearchable": true, 
            "bVisible": false, 
            "aTargets": [ 2 ]
        },
    ] 
});
Run Code Online (Sandbox Code Playgroud)

也许你缺少aTargets参数?如果您使用aoColumns的是aoColumnDefs,则数组长度需要等于列数 ( docs )。我不确定该sName参数是否会影响其工作方式......

编辑(回答更详细的问题):

我猜(从尝试在这里复制您的问题),它是 columnFilter 插件不起作用。如果您有隐藏列,则必须将bUseColVis参数设置为truedocs)。就像这样:

$('#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
    });
Run Code Online (Sandbox Code Playgroud)