DataTables добавляет столбец динамически в таблицу - PullRequest
8 голосов
/ 01 июня 2011

Я использую DataTables ( datatables.net ) для отображения данных из источника Ajax и не могу их настроить.Одна вещь, которую я хотел бы сделать, это добавить столбец, чтобы я мог, например, иметь кнопку «редактировать» для каждой строки.

Наиболее близким к этому в примерах является здесь , но яя не могу заставить это работать с источником 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 ]

11 голосов
/ 02 июня 2011

Почему вы не используете fnRenderFunction в aoColumns? Как пример:

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 голос
/ 01 июня 2011

Я создал столбцы с кнопкой редактирования и ссылками и так далее, но обычно я делаю все на стороне сервера, настраивая возвращаемые данные, а затем показываю / скрываю их с помощью параметра aoColumns. Я не совсем понимаю, чего вы добиваетесь: отображать данные на стороне сервера в виде ссылки?

0 голосов
/ 25 октября 2013

У меня есть немного RND по этой проблеме, и я получаю это надеюсь, это поможет вам.

0 голосов
/ 01 июня 2011

Была такая же проблема несколько месяцев назад.Это то, что я сделал.
Ни в коем случае не элегантное решение, но это сработало.

Как вы, возможно, уже знаете, DataTables имеют перегрузку для принятия массивов Javascript .

Итак, я сделал вызов $ .ajax.получил мой json, проанализировал его в массиве javascript и затем во время синтаксического анализа я создал дополнительный элемент (тег anchor) с href="edit.php?email=passed_email" Затем в заголовках столбцов и добавил столбец с именем Edit.Эти значения были переданы в «aaData» и «aoColumns».И затем таблица была заполнена.

И, кстати, если вы ищете встроенное редактирование, проверьте следующую ссылку.
Пример редактирования DataTables - с jEditableplugin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...