#javascript #jquery #datatables
#javascript #jquery #таблицы данных
Вопрос:
Я использую плагин jQuery DataTables с динамической таблицей html, прежде всего, я рисую свою таблицу с помощью вызова ajax, для этого я использую что-то вроде этого:
Редактировать:
Draw funcion ajax success
success: function (data) {
var aRC = JSON.parse(data.d);
var lines = "";
for (var i = 0; i < aRC.length; i ) {
var id = aRC[i].Id;
var num = id;
var rev = aRC[i].Campo;
lines = '<tr id="P' num '" data-id="' num '">';
lines = '<td>' num '</td>';
lines = '<td id="P' num '-1">' rev '</td>';
lines = '<td class="text-center">';
lines = ' <span class="btn btn-success btn-xs glyphicon glyphicon-edit" data-id="' num '"></span>';
lines = ' <span class="btn btn-danger btn-xs glyphicon glyphicon-remove" data-id="' num '"></span>';
lines = ' </td>';
lines = '</tr>';
}
$('#TableTBodyTag').html(lines);
$('#TableId').dataTable({
aLengthMenu: [
[10, 25, 50, 100, -1],
[10, 25, 50, 100, "All"]
],
"bDestroy": true,
iDisplayLength: 10,
});
}
});
Обновление функции ajax успешно
success: function (data) { correctamente
bootbox.alert(data.d);
window.Fam.reset();
Draw(); //Above function
}
Когда я выполняю свою функцию обновления, все в порядке, но моя таблица данных не обновляется, я не вижу изменений, пока не перезагружу страницу (F5). Я вызываю Draw function
document ready и в моей функции обновления.
Я не могу изменить способ создания таблицы, так как я могу решить эту проблему?
Комментарии:
1. Используете ли вы таймер для вызова функции ajax? А затем получает результат и просто хочет обновить datatable? Я полагаю, вы хотите datatables.net/reference/api/ajax.reload () или datatables.net/plug-ins/api/fnReloadAjax
2. Я использую функцию, я вызываю эту функцию в documente ready и после отправки моей функции updateFunction
Ответ №1:
Это то, что я делал, когда использовал DT, модифицированный для использования ваших переменных:
success: function (data) { correctamente
bootbox.alert(data.d);
window.Fam.reset();
$('#TableId').dataTable().fnDestroy();
$('#TableTBodyTag').html("");
Draw(); //Above function
}
Удачи!
Комментарии:
1. Аххахаха, теперь я понимаю. Поначалу совершенно непонятно. Да, я занимался этой проблемой раньше в течение нескольких часов… Я знаю, что ты чувствуешь! Мое предложение, которое я считаю наилучшим для вашего здравомыслия, является моим отредактированным ответом.
2. Ты спас мою жизнь, джаджаджа, большое тебе спасибо! Это работает нормально!
Ответ №2:
Я сам шел по этому пути. После некоторых трудных уроков я научился не бороться с таблицами данных, пытаясь создать и изменить таблицу html вручную.
Этот подход обречен на провал множеством способов.
Вместо этого используйте опцию ajax для указания источника данных и используйте columns.render() для создания вашего HTML-кода при отображении datatable .
При внесении изменений обновите удаленный источник данных, а затем вызовите table.ajax.reload()
перестроение таблицы.
var dataTableOptions = {
responsive: true,
"ajax": {
"type": 'POST',
"url": "/tools/somePage.php",
"data": function(d) {
d.command = 'getObjectInfo';
}
},
columns: [{
"orderDataType": "dom-text",
"type": 'string',
"width": '20%',
"render": function(data, type, row) {
// build all your html for the column here
}
}, {
"orderDataType": "dom-text",
"type": 'string',
"render": function(data, type, row) {}
}, {
"orderDataType": "dom-text",
"type": 'string',
"render": function(data, type, row) {}
}, {
"orderDataType": "dom-text",
"type": 'string',
"render": function(data, type, row) {}
} ],
"tabIndex": -1
}
var table = $('#tableId').DataTable(dataTableOptions);
table.ajax.reload()