具有fixedheader的数据表:行单击功能在固定的cols上给出错误

时间:2015-05-29 19:48:08

标签: datatables jquery-datatables datatables-1.10

我有一个on click函数,用于在控制台日志中存储行数据

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

我知道这有一个事实,就是在一个克隆表中创建了fixedcolumns,我想知道是否有任何解决方法吗?

// 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);
  } );  
} );

here is my example code in action

1 个答案:

答案 0 :(得分:2)

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

从手册:

  

此功能在功能上与fnGetPosition相同   DataTables,采用相同的参数(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);
});

请参阅此example code进行演示。