c#datatablejs服务器端禁用服务器端可订购但前端不可订购的列

问题描述

我在我的 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 的服务器端呈现为当我们单击列的顺序图标时开始的列顺序。所以我希望这个图标留在同一个地方。但不向服务器发送任何内容。只需在前端工作。

解决方法

我得到了一个如何解决我的问题的链接。

这里是链接:Problem Solved here

解决办法是:当我们从服务端获取到表的数据时,我们可以暂时禁用服务端处理。