【问题标题】:jQuery DataTable Search / Filter FAILS on column function generated valuejQuery DataTable Search / Filter FAILS on column function generated value
【发布时间】:2023-03-28 10:59:01
【问题描述】:

我正在使用 jQuery 数据表(最新版本 1.10.19)jQuery 版本。 3.3.1 搜索表格时未得到预期结果:

if 函数用于返回列的生成值 搜索没有产生想要的结果。

var rowno =1;
var dataSet = [
  ["Airi Satou", "Accountant", "Tokyo"],
  ["Angelica Ramos", "Chief Executive Officer (CEO)", "London"],
  ["Gavin Joyce", "Developer", "Edinburgh"],
  ["Jennifer Chang", "Regional Director", "Singapore"],
  ["Brenden Wagner", "Software Engineer", "San Francisco"],
  ["Fiona Green", "Chief Operating Officer (COO)", "San Francisco"],
  ["Shou Itou", "Regional Marketing", "Tokyo"],
  ["Martena Mccray", "Post-Sales support", "Edinburgh"],
  ["Unity Butler", "Marketing Designer", "San Francisco"]
];

 $(document).ready(function() {

  $('#example').DataTable( {
      data: dataSet,
       "columns": [
// ** DataTable search / filter FAIL: on column function generated value ***
       // { "data": function ( row, type, val, meta ) {return rowno++ ;}, "title" : "Row No."},
     { "data": function ( row, type, val, meta ) {return "row"+ rowno++ ;}, "title" : "Row No."},
      { "data": 0,"title": "Name"}, 
      { "data": 1,"title": "Position"}, 
      { "data": 2,"title": "Office"}
    ]
  } );

} );

见:jsfiddle:https://jsfiddle.net/scriptgurus/q4cvr9a8/

搜索“row1..”或row2..row3..我们应该得到带有“row1”等的行。

【问题讨论】:

  • 顺便说一句:如果使用 columns.render (datatables.net/reference/option/columns.render) - 同样失败 - 不高兴 - 多年来我在许多项目中使用过这个插件.. 它可能是一个版本错误 - 如我似乎不记得在旧版本中发生的这个问题。现在将对此进行调查。

标签: jquery datatables


【解决方案1】:

您需要使用特定的东西,因为您所做的就是在 rowno 上添加 always + 1。通常你可以这样做。但是在你的情况下,如果你这样做 console.log(rowno++) 你会看到它添加的次数比你预期的要多,这是因为循环运行了 5 次,所以它总共添加了 45 次。 数组项 (9*5) = 45,所以你有 meta 我看到它返回带有行索引的 meta.row,所以你可以这样做 return "row" + (meta.row + 1) 这样做 + 1 到索引号。

【讨论】:

    【解决方案2】:

    或者,您可以在数据表初始化期间使用带有 meta.row 参数的函数参数来获取正确的行号。

    这个元从版本 1.10.1 开始工作

    链接:columns.datacolumns.render

    { 
      "title" : "Row No.",
      "data": function ( row, type, val, meta ) {
        return "row"+ (meta.row+1);
      }
    },
    

    参见下面的示例:

    var dataSet = [
      ["Airi Satou", "Accountant", "Tokyo"],
      ["Angelica Ramos", "Chief Executive Officer (CEO)", "London"],
      ["Gavin Joyce", "Developer", "Edinburgh"],
      ["Jennifer Chang", "Regional Director", "Singapore"],
      ["Brenden Wagner", "Software Engineer", "San Francisco"],
      ["Fiona Green", "Chief Operating Officer (COO)", "San Francisco"],
      ["Shou Itou", "Regional Marketing", "Tokyo"],
      ["Martena Mccray", "Post-Sales support", "Edinburgh"],
      ["Unity Butler", "Marketing Designer", "San Francisco"]
    ];
    
     $(document).ready(function() {
     
      $('#example').DataTable( {
          data: dataSet,
           "columns": [
            { "title" : "Row No.",
              "data": function ( row, type, val, meta ) {
                return "row"+ (meta.row+1);
              }
            },
            { "data": 0,"title": "Name"}, 
            { "data": 1,"title": "Position"}, 
            { "data": 2,"title": "Office"}
        ]
      } );
      
    } );
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
    <link href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet" />
    
    <table id="example" class="display" width="100%"></table>

    【讨论】:

    • 谢谢!以前从未看过元参数——用你的修复更新了 jsfiddle
    猜你喜欢
    • 2018-07-13
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 2020-06-12
    • 2020-11-19
    • 2022-12-02
    相关资源
    最近更新 更多