【问题标题】:DataTables - Column Search within child rowsDataTables - 子行内的列搜索
【发布时间】:2023-03-26 06:25:01
【问题描述】:

我有一个同时使用子行和列搜索(过滤)的数据表。

See this Sample JSFiddle

取自几个数据表示例:Example of Child Rows - Example of Column Searching

搜索列时,我希望结果包含子行内的信息。

例如,在列搜索示例中,此人可能有多个办公室(东京、伦敦和纽约),而您只能通过展开孩子看到这些办公室。当输入任何办公室时,我希望主行显示此人,而不仅仅是显示在行上的那个人。

有没有办法在数据中搜索一行,而不仅仅是显示的文本?

在我的示例中重复:如果您搜索用户 Tiger Nixon,并展开他们,他们有一个名为 All Offices 的部分。我希望在您搜索“纽约”(或任何这些办公室)时显示此用户,而不仅仅是爱丁堡的主要办公室。

相关JavaScript代码:

var table = $('#example').DataTable({
    data: mdata,
        "columns": [{
        "className": 'details-control',
            "orderable": false,
            "data": null,
            "defaultContent": ''
    }, {
        "data": "name"
    }, {
        "data": "position"
    }, {
        "data": "office"
    }, {
        "data": "salary"
    }],
        "order": [
        [1, 'asc']
    ]
});

 $('#example tfoot th').each( function () {
    var title = $('#example thead th').eq( $(this).index() ).text();
    $(this).html( '<input type="text" placeholder="Search '+title+'" />' );
} );


// Add event listener for opening and closing details
$('#example tbody').on('click', 'td.details-control', function () {
    var tr = $(this).closest('tr');
    var row = table.row(tr);

    if (row.child.isShown()) {
        // This row is already open - close it
        row.child.hide();
        tr.removeClass('shown');
    } else {
        // Open this row
        row.child(format(row.data())).show();
        tr.addClass('shown');
    }
});

 // Apply the search
table.columns().every( function () {
    var that = this;

    $( 'input', this.footer() ).on( 'keyup change', function () {
        that
            .search( this.value )
            .draw();
    } );
} )

请注意,我的数据是通过实时 Ajax 调用加载的,我可以完全控制返回的数据。

在Datatables论坛上发帖here

【问题讨论】:

  • 您不需要在小提琴中使用实时 AJAX 来演示您正在尝试做什么。当然,除非您希望 AJAX 提供的子行内容和列搜索在服务器端完成全表搜索 - 那么我说 祝你好运 :)
  • @davidkonrad 好点。我将数据添加为一个 JavaScript 数组并将小提琴放在 OP 中。

标签: jquery datatables jquery-datatables


【解决方案1】:

我遇到了类似的问题,@davidkonrad 先生很友好地提供了一个解决方法。

在这里查看我的问题:DataTables search child row content

【讨论】:

    猜你喜欢
    • 2015-08-08
    • 2014-11-22
    • 2021-01-06
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多