Я использую составную jquery datatables.net. Я создаю свой стол, но когда я хотел бы добавить строку «вручную», строка не добавляется в конце таблицы. Я вижу, что после добавления строки таблицы моя консоль.log (данные) в Render 'Email' отображает '123', но строка не добавляется.Datatables.net добавить строку не работает
Мой код JavaScript:
$(document).ready(function() {
var $select = $('<select id="selectoption"></select>');
var $checkbox = $('<div class="container"></div>');
var $input = $('<input type="text">');
var $span = $('<span></span>');
var table = $('#griduser').DataTable({
"processing": true,
"serverSide": true,
"dom": '<"toolbar">frtip',
"ajax": {
"url": "/User/ReadUserTest/",
"dataType": "json"
},
columns: [
{"data": "Delete"},
{"data": "Id",
render: function (data, type, row, meta) {
var $clone = $span.clone();
$clone.attr("id", "userid");
$clone.append('<label>' + data + '</label>');
return $clone.wrap('<span></span>').parent().html();
}
},
{"data": "UserName",
render: function (data, type, row, meta) {
var $clone = $input.clone();
$clone.attr("id", "userid");
$clone.attr('value', data);
return $clone.wrap('<div></div>').parent().html();
}
},
{"data": "Login",
render: function (data, type, row, meta) {
console.log(data);
var $clone = $input.clone();
$clone.attr("id", "userlogin");
$clone.attr('value', data);
$clone.val(data.Login);
return $clone.wrap('<div></div>').parent().html();
}
},
{"data": "Email",
render: function (data, type, row, meta) {
var $clone = $input.clone();
$clone.attr("id", "email");
$clone.attr('value', data);
$clone.val(data.Email);
return $clone.wrap('<div></div>').parent().html();
}
},
{"data": "Save"}
]
,
"columnDefs": [
{"targets": -1,
"data": null,
"defaultContent": "<input type='image' id='saverole' src='/images/save.png' alt='Submit' width='48' height='48'>"
},
{"targets": 0,
"data": null,
"defaultContent": "<input type='image' id='saverole' src='/images/remove.png' alt='Submit' width='48' height='48'>"
}
],
"initComplete": function (settings, json) {
table.row.add({
Delete: 'delete123', Id: 'id123', UserName: 'name123', Login: 'login123', Email: 'email123', Save: 'save123'
}).draw();
},
});
});
Json данные:
{"sEcho":null,"iTotalRecords":2,"iTotalDisplayRecords":2,"aaData":
[{"Id":"09b90bca-7bf5-4956-91c9- 0d7cee180ba5","UserName":"[email protected]","Login":"[email protected]","Email":" [email protected]"},
{"Id":"86f9eabd-ec1e-40b1-af5b- fea899d4c1c0","UserName":"[email protected]","Login":"[email protected]"," Email":"[email protected]"}]}
И мой HTML код:
<table id="griduser" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th></th>
<th>Id</th>
<th>Nom</th>
<th>Login</th>
<th>Email</th>
<th></th>
</tr>
</thead>
<tfoot>
<tr>
<th></th>
<th>Id</th>
<th>Nom</th>
<th>Login</th>
<th>Email</th>
<th></th>
</tr>
</tfoot>
</table>
Спасибо за вашу помощь
Update:
Ошибка с oninitcomplete:
-in яваскрипта qjuery.datatables.js (строка 2022):
var aoData = oSettings.aoData[ iDataIndex ];
if (aoData.nTr === null)
{
_fnCreateTr(oSettings, iDataIndex);
}
-in console.log ошибки: Uncaught TypeError: Не удается прочитать свойство 'НТР' из неопределенный
Я использую ваш код, но теперь добавляется строка. Если я сменил Datatables на «datatables», у меня есть ошибка. Я пытаюсь добавить рендеринг моих данных столбца и сохранить как другие, но это не работает. Я определил столбцы save и delete, потому что мне нужно добавить кнопку в эту ячейку. – Zoners
@ Zoners - кроме того, у вас есть ошибка в вашем JSON, '' Email "' должен быть '' Email "' - и при условии, что код, который вы на самом деле это код, который вы используете, тогда он работает -> ** http: //jsfiddle.net/cuwpmwmr/**. Я предполагаю, что причина, по которой вы _now_ испытываете относительно 'add()', связана с асинхронностью javascript. Таблица не завершена, инициализируется перед 'table.row.add()', потому что вы используете данные сервера, но она будет работать, если вы позже добавите '(при нажатии кнопки) и т. Д. Докажите это, поставив' table.add 'в [initComplete] (https://datatables.net/reference/option/initComplete) – davidkonrad
Извините, я был в отпуске :). Я принимаю ваш ответ, потому что демонстрационная работа. Но я пытаюсь использовать «initComplete», я вижу, что все мое поле завершено, и после того, как функция initcomplete является вызовом, я использую table.row.add, но у меня всегда есть ошибка. «Я обновляю свой пост – Zoners