如何在javascript中从Datatables获取特定的列值

时间:2013-07-08 07:28:38

标签: javascript jquery json datatables

我有一个填充了aaData的数据表。最后一列是action,再次填充数组。

我需要做的是,通过单击操作链接,我应该获取该单击操作的特定行的列数组值。

操作列填充了以下json格式

[
            {   
                "displayValue":"Browse",
                "link":"svnpath/BacklogApp",
                "displayIcon" : "browselogo"
            },
            {   
                "displayValue":"Source Code",
                "link":"svnpath/BackLog/trunk/webapp-project/",
                "displayIcon" : "svnlogo"
            },
            {   
                "displayValue":"Contributors: Vaibhav",
                "link":"#contributors",
                "displayIcon" : "people"
            }
        ]

这是我的操作列,其中包含三个链接 - 浏览,源代码和参与者。当我点击贡献者图标时,我应该能够获得"Contributors: Vaibhav"这个字符串。

以下是JS代码

$(document).on('click', '.contributor', function(e)

    var aPos = tableAADataForContributors.fnGetPosition(this);
    alert(aPos);

    //if aPos returns an array in console, use first val at pos zero to get row data
    var aData = tableAADataForContributors.fnGetData(aPos[0]);
    alert(aData);

但是在提醒时,我的 aPos 将变为null,而 tableAADataForContributors 则不为空。

另外,这就是我填充数据表的方式

$.ajax({
   type: "GET",
   url: url,
   dataType: "json",
   cache: false,
   contentType: "application/json",
   success: function(tablePropJSONData) {
     var oTable = $('#genericTable').dataTable( {
        "bProcessing": true,
        "aaData": tableObj,
        "sPaginationType"   : "full_numbers",
        "bJQueryUI"         : true,
        "bRetrieve"         : true,
        "bPaginate"         : true,
        "bSort"             : true,
        "aaSorting"         : [[ 2, "desc" ]],
        "iDisplayLength"    : 50,
        "bAutoWidth"        : false,
        "bStateSave"        : false,
        "aoColumns" : tablePropJSONData.aoColumns,
        "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
            var lastColumnIndex = aData.length-1;
            var actionColumnContent = renderActionColumn(aData[lastColumnIndex]);
            $('td:eq('+lastColumnIndex+')', nRow).html(actionColumnContent);
        }
    }); 
    tableAADataForContributors = oTable; // initializing for picking up contributors from datatable.

    searchDataTable(oTable, searchTerm);
   },

同样初始化全局变量 tableAADataForContributors ,以便以后可以在onclick事件中使用它。

我无法这样做。请有人推荐一个javascript代码。

1 个答案:

答案 0 :(得分:1)

谢天谢地,我能够自己解决这个问题。只需要一点点就可以了。 下面的代码符合要求

$(document).on('click', '.contributor', function(e){
    var aPos = tableAADataForContributors.fnGetPosition( $(this).closest('tr')[0]);

    //if aPos returns an array in console, use first val at pos zero to get row data
    var aData = tableAADataForContributors.fnGetData(aPos);

    var actionColumnData = aData[aData.length-1];

    $.each(actionColumnData, function(i, value){
        alert(value.displayValue)
    });