我为我的数据表编写了以下代码,用我的数据库中的内容填充表格,如下所示:
if (datatable != null)
datatable.destroy();
datatable = $('#tableProducts').DataTable({
"pageLength": 50,
"bLengthChange": false,
"processing": true,
"serverSide": true,
"filter": true,
"orderMulti": false,
"bSort": false,
"ajax": {
"url": "/Bulk/LoadData/",
"type": "POST",
"data": {
"username": $(".sellerInput").val(),
"drange": $(".select2").val()
},
success: function (data) {
}
},
"columns": [
{
"targets": -1,
"data": "ImageURL",
"name": "Title",
"render": function (data, type, row) {
return '<td><img src=' + data + '></td>';
},
"autoWidth": true
},
{
"data": "Sales",
"name": "QuantitySold",
"render": function (data, type, row) {
return '<td>' + data + '</td>'
},
},
{
"data": "CurrentPrice",
"name": "CurrenctPrice",
"render": function (data, type, row) {
return '<td> <b>$ ' + data + '</b></td>'
},
}
]
});
如果我没有指定成功回调,这就行得很好。如果我像这样指定成功回调(也在上面的代码中显示):
"ajax": {
"url": "/Bulk/LoadData/",
"type": "POST",
"data": {
"username": $(".sellerInput").val(),
"drange": $(".select2").val()
},
success: function (data) {
// some custom code here and + filling up datatable with data from my DB...
}
},
这里的问题是如果我指定成功回调然后更新我的HTML页面的其他部分,那么数据表不会加载数据库中的数据..
我的问题是,如果我覆盖数据表的成功回调函数,以便只更新数据表本身的HTML页面的更多部分,我如何手动指定数据表的数据源?
有人能帮助我吗?
答案 0 :(得分:2)
您可以使用dataSrc
代替success
来获取回复数据
试试这个:
"ajax": {
"url": "/Bulk/LoadData/",
"type": "POST",
"data": function (d){
d.username: $(".sellerInput").val(),
d.drange: $(".select2").val()
},
"dataSrc": function (data) {
// some custom code here and + filling up datatable with data from my DB...
console.log(data);
return data;
}
},
注意:此外,您还尝试将额外的参数作为username
和drange
发送,因此在DataTable中我们应该使用"data":function(d){
作为函数发送额外的参数
答案 1 :(得分:1)
来自docs:
成功 - 不得覆盖,因为它在内部使用 数据表。操纵/转换服务器返回的数据 使用ajax.dataSrc。
所以简单地使用
ajax: {
url: "/Bulk/LoadData/",
type: "POST",
data: {
"username": $(".sellerInput").val(),
"drange": $(".select2").val()
},
dataSrc: function (data) {
// some custom code here and + filling up datatable with data from my DB...
return data
}
},
代替。