【问题标题】:jQuery dataTables: Exclude row from export based on criteriajQuery dataTables:根据条件从导出中排除行
【发布时间】:2021-07-28 22:14:27
【问题描述】:

在 jQuery dataTables 中,如果表格中的特定列满足特定条件,有没有办法从 Excel 导出中排除一行?

我目前为导出按钮设置了以下参数

$(document).ready( function () {
    var table = $('#resultTable').DataTable(
    {
        searching: false,
        pageLength: 50,
        order: [3, 'asc'],
        paging: true,
        deferRender: true,
        initComplete: function( settings, json ) {
            $('#resultContainer').show();
            $('#loading').hide();
        },
        /*dom: 'Bfrtip',*/
        /*buttons: ['excel'],*/
        buttons: [
        {
                extend: 'excelHtml5',
                exportOptions: {
                    columns: [19,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]
                }
            }],
        columns: [
        {orderable: false},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,{orderable: false},{orderable: false},{orderable: false}
        ],
    }
    
    );
    
    table
    .buttons()
    .container()
    .appendTo( '#menu' );
} );

但是,我想从导出中排除第 19 列的值设置为“true”的任何行。

已编辑:这是数据表外观的示例。过滤应该在带有标题 DNR 的列上。

[Merge] First Name Last Name Gender City State Zip Phone Fax Email Email 2 Primary Specialty Secondary Specialty Practice Name Years D F NPI ME DNR
[button] Joe Smith M Anytown PA 12345 123-456-7890 123-456-7891 test@test.com test@test.com Primary Secondary Joe Smith 5 FALSE FALSE 12345 12345 TRUE
[button] Susan Jones F Anytown PA 12346 123-456-7890 123-456-7891 test@test.com test@test.com Primary Secondary Joe Smith 6 FALSE FALSE 12345 12345 FALSE
[button] John Johnson M Anytown PA 12347 123-456-7890 123-456-7891 test@test.com test@test.com Primary Secondary Joe Smith 7 FALSE FALSE 12345 12345 FALSE

如果您查看最后一列 (DNR),在此示例中,只有第 2 行和第 3 行将包含在导出中,而第 1 行将被省略,因为该列中的值为 True。

【问题讨论】:

  • 您能否展示一个包含更多行的示例?因为我们不知道如何格式化你的数组(我想)按钮(如果可能的话用行来消除)
  • 谢谢。我已经编辑了问题以包含初始化表的完整函数以及数据样本。
  • exportOptions 选项还包括一个rows 子选项(类似于您已经在使用的columns 选项)。 rowscolumns 都可以提供一个函数。对于rows,它可以是:rows: function ( idx, data, node ) { return data; }。因此,您可以增强该功能以包含条件逻辑,以选择性地仅返回您要导出的行。但我们不知道您的行是如何构成的,因此我们无法提供具体的解决方案。您可以使用console.log( data ); 亲自查看。

标签: jquery datatables


【解决方案1】:

这是对我有用的解决方案。当我在从数据库中读取表时编写表时,我将 class="dnr" 应用于任何符合我想要排除的标准的行。然后我更改了 exportOptions 参数,通过将行设置为 jQuery 选择器“:not('.dnr')”来排除任何具有该选择器的行。所以新的按钮定义是:

buttons: [{ extend: 'excelHtml5',
                exportOptions: {
                    columns: [19,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],
                    rows: ":not('.dnr')"
                }
         }],

【讨论】:

    猜你喜欢
    • 2015-12-06
    • 1970-01-01
    • 2021-10-21
    • 2020-07-25
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    相关资源
    最近更新 更多