2

我有一个单击功能将行数据存储在控制台日志中

如果单击前两列,您会注意到该函数返回未定义,但是任何未冻结的列都返回数据对象

我知道这与固定列是在克隆表中创建的事实有关,我想知道是否有任何解决方法?

// Server-side processing with object sourced data
var $table;
$(document).ready(function() {
    $table = $('#example').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "/ssp/objects.php",
      dom: "<'row'<'col-md-6 'l><'col-md-6 pull-right'>r>t<'row'<'col-md-6'i><'col-md-6'p>>",
        "columns": [
            { "data": "first_name" },
            { "data": "last_name" },
            { "data": "position" },
            { "data": "office" },
            { "data": "start_date" },
            { "data": "salary" }
        ],

    scrollY: "600px",
    scrollX: "100%",
    scrollCollapse: true,
        "pageLength": 5,
  lengthMenu: [[5, 10, 25, 50 ], [5, 10, 25, 50]],
  order: [[ 1, "asc" ]],
    } );

    new $.fn.dataTable.FixedColumns( $table, {
        leftColumns: 2
    } );  


$table.on("click", "tr",function(){
  var aData = $table.row( this ).data();
  console.log( aData);
  } );  
} );

这是我的示例代码

4

1 回答 1

2

您可以使用fnGetPosition获取有关行索引的信息。

从手册:

此函数在功能上与fnGetPositionDataTables 中的相同,采用相同的参数(TH、TD 或 TR 节点)并返回完全相同的信息(数据索引信息)。两者的区别在于该方法考虑了表中的固定列,因此可以从主表或克隆表中传入节点并获取主表中数据的索引位置。

您的代码需要修改如下:

var fc = new $.fn.dataTable.FixedColumns( $table, {
   leftColumns: 2
});  

$table.on("click", "tr", function(){
   var aData = $table.row(fc.fnGetPosition(this)).data();
   console.log(aData);
});

请参阅此示例代码进行演示。

于 2015-05-30T02:45:23.923 回答