问题描述
我在我的 MVC 项目中使用 datatablejs 服务器端。当我点击一列时,它会将列名发送到服务器,然后在我对表进行排序后获取列名。
但问题出在表中,我不想按服务器端对列进行排序。我只想在前端订购此列。我该怎么做?
这是一些代码:
table = $(table).DataTable({
"ajax": {
"url": postToUrl,"type": "POST","datatype": "json","data": data //Veri göndermek istedğinde str ile controllerda çağır,},"columns": columns,// BURAYA GÖSTERİLECEK KOLONLARI GİR! EKSİK OLAMAZ
"serverSide": "true","order": [0,"asc"],"processing": "true","retreive": "true","fnRowCallback": fnRowCallBack,dom: "<'row'<'pt-1 col-sm-6 col-12'l><'pt-1 col-sm-6 col-12'f>>" + "<'row'<'col-sm-12'tr>>" + "<'row'<'d-flex justify-content-center justify-content-lg-start col-12 col-lg-5'i><'d-flex justify-content-center justify-content-lg-end col-12 col-lg-7'p><'pt-1 pb-1 col-sm-12 d-flex justify-content-start justify-content-md-center'B>>",buttons: [
'copy','csv','excel','pdf','print'
],"idisplayLength": 10,"columnDefs": columnDefs,"oLanguage": {
"sUrl": '/Content/js/demo/Turkish.json'
},colReorder: true,"oSearch": {
"sSearch": ""
},stateSave: true,destroy: true,"drawCallback": function(settings) {
successFun();
}
});
我从这个方法得到我的表的请求:
public ActionResult GetCustomeRSServerSide()
{
//datatable için
int start = int.TryParse(Request["start"],out int _start) ? _start : 0;
int length = int.TryParse(Request["length"],out int _length) ? _length : 0;
//arama için
var searchValue = Request["search[value]"];
//sıralama için
var order = Request["order[0][column]"];
string colWantedToOrder = int.TryParse(order,out int _order) ? Request[$"columns[{_order}][data]"] : "";
var direction = Request["order[0][dir]"];
在我看来,我可以控制来自数据表的请求并将同一个表返回到这个 DT。但我想使用 DT 的属性。如果我按照我的意见去做,这会很复杂。
注意:我们可以禁用列顺序。但我不想要。我希望该列可订购,但不能在服务器端订购。
注意 2:Datatable 的服务器端呈现为当我们单击列的顺序图标时开始的列顺序。所以我希望这个图标留在同一个地方。但不向服务器发送任何内容。只需在前端工作。