DataTables搜索子行内容

coo*_*ast 11 jquery datatables datatables-1.10

DataTables搜索栏不允许我搜索子行中的内容.

我已搜查广泛找到这个问题的答案(1,2,3,4,5,6,7,8,9),但有一点在这个问题上没有任何反应.

这是一个简单的jsfiddleDataTables调试器结果.

我想在表格中搜索分机号码(在子行中),但在搜索栏中输入一个分机号码不会留下任何搜索结果.

我通过添加以下内容尝试了此帖子中的解决方案:

table.columns().every( function () {
    var that = this;
    var header = this.header();

    $( 'input', this.footer() ).on( 'keyup change', function () {
        that
        .column( header.getAttribute('data-search-index')*1 ) // *1 to make it a number
        .search( this.value )
        .draw();
    } );
} );
Run Code Online (Sandbox Code Playgroud)

...但它仍然不起作用,你可以在上面链接jsfiddle中看到.

有人可以帮帮我吗?

谢谢

Gyr*_*com 13

为了使jQuery DataTables能够搜索子行,您需要将子行中显示的数据作为隐藏列添加到主表中.

例如,您可以extn使用columns.visible选项为data属性添加隐藏列,如下所示:

JavaScript的:

    "columns": [
        {
            "class":          'details-control',
            "orderable":      false,
            "data":           null,
            "defaultContent": ''
        },
        { "data": "name" },
        { "data": "position" },
        { "data": "office" },
        { "data": "salary" },
        { "data": "extn", "visible": false }            
    ],
Run Code Online (Sandbox Code Playgroud)

HTML:

<thead>
    <tr>
        <th></th>
        <th>Name</th>
        <th>Position</th>
        <th>Office</th>
        <th>Salary</th>
        <th>Extn.</th>
    </tr>
</thead>
Run Code Online (Sandbox Code Playgroud)

DEMO

有关代码和演示,请参阅此jsFiddle.搜索5407并显示第一行,即使数据仅出现在子行中.

  • 这是一个更好的解决方案,从我在那里看到的,不需要任何额外的代码.干净简单.感谢分享! (3认同)
  • 这确实很有用,但是当搜索到的数据仅出现在子行中时,如何才能显示子行和父行呢?如果搜索到的数据仅出现在父级中,则子级应保持隐藏,仅显示父级。 (2认同)