如何从DataTables行获取值?

时间:2019-02-07 07:59:28

标签: php jquery ajax datatables row

当我单击对应于该行的按钮时,我想在DataTables中获取一行的值,但是当使用此代码时,我却未定义:

按钮的添加方式如下:

function getdata()
    {
     $pdrs = Pdrs::select('ID_Piece', 'Designation', 'Status');
     $result = DataTables::of($pdrs)
            ...
            ->addColumn('action', function($pdr){
            return '<a href="#" class="btn btn-xs btn-primary Ajouter_au_panier" id="'.$pdr->ID_Piece.'"><i class="glyphicon glyphicon-shopping-cart"></i> Ajouter au panier</a>';})
        ->make(true);   
    return $result ;
    }

触发器是:

$(document).on('click', '.Ajouter_au_panier', function(){
    var table = $('#pdr_table').DataTable();
    console.log( table.row( this ).data() );  
});

1 个答案:

答案 0 :(得分:3)

如果将触发器放在单元格内的<a>标签中,则需要引用父单元格而不是<a>

$(document).on('click', '.Ajouter_au_panier', function(e){
    var table = $('#pdr_table').DataTable();
    console.log( table.row( $(this).closest("td") ).data() );  
});

更新/编辑::要获取特定列的内容,请使用cells()函数,将行和列用作对象中的参数。即对于第2列:

$(document).on('click', '.Ajouter_au_panier', function(e){
    var table = $('#pdr_table').DataTable();
    var rowId = table.row( $(this).closest("td") ).index();
    console.log( table.cells({ row: rowId, column: 2 }).data()[0] );  
});

更新2 /已编辑::如果要获取单击链接的同一列的内容,可以这样做:

$(document).on('click', '.Ajouter_au_panier', function(e){
    var table = $('#pdr_table').DataTable();
    var rowId = table.row( $(this).closest("td") ).index();
    var colId = table.column( $(this).closest("td") ).index();
    console.log( table.cells({ row: rowId, column: colId }).data()[0] );  
});