首页 > 解决方案 > 如何从 DataTables 行中获取值?

问题描述

当单击与该行对应的按钮时,我想在 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() );  
});

标签: phpjqueryajaxdatatablesrow

解决方案


如果将触发器放在<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] );  
});

推荐阅读