DataTable在点击时获取隐藏列值

时间:2014-02-12 01:55:04

标签: jquery datatables

我有一个用Ajax创建的数据表。但是,我不希望显示所有字段,因此我在不太重要的字段上将bVisible设置为false。

$(document).ready(function() {
            $('#example').dataTable( {
                "bProcessing": true,
                "sAjaxSource": "../DataQueries/FetchAllSubjectsForBrowse.asp",
                "aoColumns": [ 
                    /* Subject Name */ null,
                    /* Address */ null,
                    /* LinkedWithCompany */ { "bVisible": false},
                    /* Work Tel */ null
                ]
            } );

但是,我希望能够点击一行来检索所有值,包括隐藏的值。所以我尝试了下面的内容:

$('#example tbody tr').live('click', function () {
             var sTitle;
             var nTds = $('td', this);
             var sSubjectName = $(nTds[0]).text();
             var sSubjectAddress = $(nTds[1]).text();
             var sLinkedWithCompany = $(nTds[2]).text();
             var sWorkTel = $(nTds[3]).text();
});

但是,当我检索sLinkedWithCompany的值时,它会给我sWorkTel的值。

我对如何检索这个隐藏值感到有些困惑。

由于

4 个答案:

答案 0 :(得分:6)

以下是点击时获取行数据的示例。

假设您有删除或任何包含表格每行的按钮,如果您点击该按钮,请获取所选行的数据并执行所需的操作。

$(document).ready(function(){
    $('#example tbody').on('click', '.delete', function(){
        var row = $(this).closest('tr');
        var data = $('#example').dataTable().fnGetData(row);
        console.log(data);
    }); 
});

答案 1 :(得分:2)

在Datatables v1.10.x上我使用过这种方法:

列定义:

"columnDefs": [
    { "data": "yourColumnId", "targets": 0, "visible": false
]

然后在我的功能中......

var rows = $("#tbl").dataTable().fnGetNodes();

for (var i = 0; i < rows.length; i++) {

  id = $("#tbl").dataTable().fnGetData(i).yourColumnId;

}

我更喜欢这种方法而不是:

id = $(rows[i]).find("td:eq(0)").html();

答案 2 :(得分:1)

使用以下代码获取当前tr数据(也完美地返回隐藏列值):

$('#example-table-id').dataTable().fnGetData($('currenttr'));

它返回一个数组,您可以访问td值,如:

$('#example-table-id').on('click', 'tbody tr', function(){
    var arr=$('#example-table-id').dataTable().fnGetData($(this)); 
    var Id=arr[0]; //returns first td value 
    var Name=arr[1];//returns second td value
}

答案 3 :(得分:0)

我会推荐这样的东西:

var data = [];
$.ajax({url:"../DataQueries/FetchAllSubjectsForBrowse.asp",success:function(result){
  data=result;
}});
var i=0;
 data.forEach(function(d) {d.index=i++;});

$('#example').dataTable( {
            "bProcessing": true,
            "aaData":data, 
            "aoColumns": [ 
                /*index*/
                /* Subject Name */ null,
                /* Address */ null,
                /* LinkedWithCompany */ { "bVisible": false},
                /* Work Tel */ null
            ]
        } );

然后在您的点击处理程序中获取索引,然后访问原始数据数组中的记录

$('#example tbody tr').live('click', function () {
         var sTitle;
         var nTds = $('td', this);
         var index = $(nTds[0]).text();
         var record = data[i];
});

这只是一个起点,但我希望你明白这个想法。