DataTables动态地将列添加到表中

时间:2011-06-01 07:25:25

标签: javascript jquery gridview datatables

我正在使用DataTables(datatables.net)来显示来自Ajax源的数据并且无法自定义它。我想做的一件事就是添加一列,这样我就可以为每行添加一个“编辑”按钮。

与示例中最接近的是here,但我无法使用ajax源代码。

目前,我正在使用以下代码显示我的表格:

fnServerObjectToArray = function ( aElements ){
    return function ( sSource, aoData, fnCallback ) {
        $.ajax( {
            "dataType": 'json', 
            "type": "POST", 
            "url": sSource, 
            "data": aoData, 
            "success": function (json) {
                var a = [];
                for ( var i=0, iLen=json.aaData.length ; i<iLen ; i++ ) {
                    var inner = [];
                    for ( var j=0, jLen=aElements.length ; j<jLen ; j++ ) {

                        inner.push( json.aaData[i][aElements[j]] );
                    }
                    a.push( inner );
                }
                json.aaData = a;
                fnCallback(json);
            }
        } );
    }
}

$(document).ready(function() {
    $('#example').dataTable( {
        "bProcessing": true,
        "sAjaxSource": 'get_data.php',
        "fnServerData": fnServerObjectToArray( [ 'username', 'email' ] )
    } );
}); 

4 个答案:

答案 0 :(得分:11)

为什么不在aoColumns中使用fnRenderFunction?举个例子:

aoColumns: [ { "bVisible": false} , null, null, null, null,
  { "sName": "ID",
    "bSearchable": false,
    "bSortable": false,
    "fnRender": function (oObj) {
       return "<a href='EditData.php?id=" + oObj.aData[0] + "'>Edit</a>";
     }
  }
]

您可以使用它来格式化服务器端的值。

请参阅http://jquery-datatables-editable.googlecode.com/svn/trunk/ajax-inlinebuttons.html上的类似示例(忽略可编辑插件的特定设置)

答案 1 :(得分:1)

我创建了带有编辑按钮和链接的列等等,但通常我通过custominzg我返回的数据做所有服务器端,然后使用aoColumns选项显示/隐藏它们。我真的不明白你要实现的目标:将服务器端数据显示为链接?

答案 2 :(得分:0)

几个月前有同样的问题。这就是我所做的 绝不是优雅的洗脱​​,但这很有效。

您可能已经知道,DataTables do have an overload to accept Javascript Arrays

所以我通过$ .ajax调用。得到了我的json,将其解析为javascript数组,然后在解析时我创建了一个额外的元素(anchor标签)href="edit.php?email=passed_email"然后在列标题上添加了一个名为Edit的列。这些值被输入“aaData”和“aoColumns”。然后桌子填满了。

顺便说一句,如果您正在寻找内联编辑,请查看以下链接 DataTables editing example - with jEditableplugin

答案 3 :(得分:0)

我对这个问题有一些RND并得到this 希望这会帮助你。