Как я могу передать строку таблицы HTML в DataTable.net fnAddData - PullRequest
15 голосов
/ 16 мая 2010

Я использую плагин DataTable.net и мне интересно, как я могу динамически добавить строку в существующую таблицу?

http://datatables.net/examples/api/add_row.html

Я смотрю на этот пример, и у них это так

/* Global variable for the DataTables object */
var oTable;

/* Global var for counter */
var giCount = 2;

$(document).ready(function() {
    oTable = $('#example').dataTable();
} );

function fnClickAddRow() {
    oTable.fnAddData( [
        giCount+".1",
        giCount+".2",
        giCount+".3",
        giCount+".4" ] );

    giCount++;
}

но мне интересно, что произойдет, если я захочу, чтобы у меня уже была обработана строка таблицы?

Скажи, что это мой стол.

<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table> 

Теперь у меня есть это

var newRow = '<tr><td>row 3, cell 1</td><td>row 3, cell 2</td></tr>';

Как я могу добавить его через addRow?

Я пытался oTable.fnAddData(newRow);, но, похоже, это не сработало.

Так что я не уверен, как это сделать.

Ответы [ 7 ]

51 голосов
/ 01 августа 2014

Решено просто:

var newRow = "<tr><td>row 3, cell 1</td><td>row 3, cell 2</td></tr>";
var table = $('table').DataTable();
table.row.add($(newRow )).draw();
9 голосов
/ 31 декабря 2010

Если проблема сохраняется, загляните в плагин DataTables fnAddTr .

Я думаю, что это может решить ваши проблемы.

5 голосов
/ 15 февраля 2016
var dataTable = $('.table').DataTable();

// get the html table rows then
dataTable.destroy();

$("tbody").empty().promise().done(function(){
    $("tbody").html(data);
    dataTable = $(".table").DataTable();
});

Это работает, если вы хотите применить всю строку html, если у вас есть как встроенные CSS или дополнительные теги html внутри разделов таблицы.

5 голосов
/ 08 октября 2013

jQuery DataTables 1.10 позволяет вам делать это изначально без необходимости в плагине. Возьмите самую последнюю ветку разработки здесь: https://github.com/DataTables/DataTables/tree/1_10_wip/media/js

Вот пример кода о том, как его использовать:

$(document).ready(function() {
  var t1 = $('#t1').DataTable();
  var t2 = $('#t2').DataTable();

  $('#t1 tbody').on( 'click', 'tr', function () {
    t1.row( this ).remove().draw();
    t2.row.add( this ).draw();
  } );

  $('#t2 tbody').on( 'click', 'tr', function () {
    t2.row( this ).remove().draw();
    t1.row.add( this ).draw();
  } );
} );

Ссылка: http://www.datatables.net/forums/discussion/comment/52595#Comment_52595

Подробнее

Обратите внимание, что вызов выше для DataTable (), а не dataTable (). Если ваш объект dataTable (), обращайтесь к нему следующим образом:

t1 = $('#t1').dataTable();
t1.DataTable().row.add(this).draw();
5 голосов
/ 16 мая 2010

Вызовите fnAddData с массивом значений, которые вы хотите добавить, например:

oTable.fnAddData(["row 3, cell 1", "row 3, cell 2"]);

Начиная с версии 1.10 используйте row.add() метод, описанный @ froilanq

Подробнее об API можно прочитать здесь , вот аргументы, которые он принимает:

  1. строки массива : данные, добавляемые в таблицу. Этот массив должен иметь ту же длину, что и количество столбцов в исходной таблице HTML.
    или
    массива строк массива : 2D массив данных для добавления в таблицу. Внутренний массив должен иметь ту же длину, что и количество столбцов в исходной таблице HTML.
  2. логическое : необязательно - перерисовывать таблицу или нет после добавления новых данных (по умолчанию true)
1 голос
/ 07 июня 2015

привет, друзья, этот код хорошо сработал для меня.

var oTable = $('#datatable').dataTable();
var api = oTable.api(true);
var newRow = {
                colName1: '',
                colName2: 0,
                colName3: 0,
                colName4: 0
             };
api.row.add(newRow).draw();

удачи.

0 голосов
/ 09 июля 2018

Чтобы добавить несколько строк из файла JSON с помощью MVC.

    function fnClickAddRow(obj) {
        $('#tableID').dataTable().fnAddData([
            obj.column1,
            obj.column2,
            obj.column3,
            obj.column4,
            obj.column5,
            obj.column6,
            obj.column7,
            obj.column8,
            obj.column9,
            obj.column10]);
    }
    function rowAdd() {
        $.ajax({
          type: 'POST',
            url: '@Url.Action("Action", "Controller")',
        success: function (data) {
            $.each(data, function (i, obj) {
                fnClickAddRow(obj);
            });
            }
        });

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