【问题标题】:How can I retrieve a row based on column values using jQuery DataTables?如何使用 jQuery DataTables 根据列值检索行?
【发布时间】:2011-06-22 18:54:08
【问题描述】:

有没有办法根据列值在 jQuery DataTables 中查找一行?例如,我能否确定哪一行在第 1 列中包含“foo”值,在第 2 列中包含“bar”值?我想以编程方式确定哪一行包含这些值。简单地保留一个将值和行索引联系在一起的单独数据结构是最好的解决方案吗?我想删除包含给定值的列的表行。

我正在使用 DataTables 1.8.0 和 jQuery 1.5.1。

【问题讨论】:

    标签: jquery datatables


    【解决方案1】:

    我会使用 fnGetData 获取数据,遍历行并使用 $.inArray:

    function getRow(table_id, arg1, arg2) {
        var oTable = $('#' + table_id).dataTable(),
            data = oTable.fnGetData(),
            row, i, l = data.length;
    
        for ( i = 0; i < l; i++ ) {
            row = data[i];
    
            // columns to search are hard-coded, but you could easily pass this in as well
            if ( $.inArray(arg1, row) == 0 && $.inArray(arg2, row) == 1 ) {
                return $('#' + table_id + ' tr').eq(i);
            }
        }
        return false;
    }
    
    $row = getRow('table_id', 'foo', 'bar');
    

    注意:未经测试

    【讨论】:

      【解决方案2】:

      尝试使用这个选择器:

      $("tr td:nth-child(2):contains('value')").siblings(":contains('test')")
      

      看看这个小提琴:

      http://jsfiddle.net/B4wMp/8/

      DataTable 只是被呈现为一个普通的旧 html 表。

      【讨论】:

      • 简洁明了,尽管contains 将在您不希望它的部分值上返回true - 当您要求new 时为new york 返回true。要定位特定列,您还必须添加 ...siblings.eq(column_n)...,确保根据排除最初选择的元素所产生的新索引从数组中选择正确的列。
      【解决方案3】:

      我也有类似的要求。 我也在使用 Datatable,但版本 >=1.10。 fnGetData() 现在不见了。

      这是对@glortho 答案的改编:

      function getRow(tableId, propName, propValue) {
              var oTable = $('#' + tableId).DataTable(),
                  data = oTable.rows().data(),
                  row, i, l = data.length;
      
              for ( i = 0; i < l; i++ ) {
                  row = data[i];
      
      
                  if (row[propName] == propValue) {
      
                      return $(`#${tableId}  tr`).eq(i+1);
                  }
              }
      
      
              return false;
          }
      

      【讨论】:

        猜你喜欢
        • 2015-09-03
        • 1970-01-01
        • 2020-03-05
        • 1970-01-01
        • 1970-01-01
        • 2021-02-21
        • 2020-07-25
        • 1970-01-01
        • 2015-12-12
        相关资源
        最近更新 更多