datatables+lengthMenu+All+服务器端处理+不工作

datatables + lengthMenu + All + serverside processing + not working

本文关键字:工作 处理 服务器端 datatables+lengthMenu+All+      更新时间:2023-09-26

这是一个基本的数据表fiddle。这是默认设置,下拉菜单将显示以下操作Show options 10, 25, 50, 75 and 100 records:

现在我想做的是"lengthMenu": [ [10, 25, 50, -1], [10, 25, 50, "All"] ],我可以在这把小提琴里。但是,如果我使用服务器端处理,这就是All选项不适用于我的地方。其他选项适用。当我选择All时,它会显示它显示的数据,底部显示No data found in the server

据我所知,唯一的区别是数据来自服务器。有人能建议我怎么解决这个问题吗?据我所知,当我选择All时,我正在发送length:-1,而对于10,它是length:10,所以不确定为什么All不工作

        $(document).ready(function() {
            var dataTable = $('#employee-grid').DataTable( {
                "lengthMenu" : [[ 10, 25, 50, -1 ],[ '10', '25', '50', 'All' ]],
                //"pageLength": 25,
                "processing": true,
                "serverSide": true,
                "ajax":{
                    url :"employee-grid-data.php", // json datasource
                    type: "post",  // method  , by default get
                    error: function(){  // error handling
                        $(".employee-grid-error").html("");
                        $("#employee-grid").append('<tbody class="employee-grid-error"><tr><th colspan="3">No data found in the server</th></tr></tbody>');
                        $("#employee-grid_processing").css("display","none");
                    }
                }                   
            } );
        } );


使用服务器端处理时,应忽略startlength请求参数ONLY如果length参数是PHP脚本中的-1,则返回所有记录。

"lengthMenu":[[10,25,50,-1],[10,25,50%,"All"]]

1) 表示"ALL"的值为-1。

2) 这就是为什么当你选择所有你正在发送的长度:-1,对于10,它是长度:10

3) 这就是为什么在服务器中找不到数据的原因-错误

4) 要纠正这一点,请在您的控制器中给出

var length=Request.Form.GetValues("length").FirstOrDefault()=="-1"?Convert.ToString(YOUR_LIST.Count()):Request.Form.GetValues("length").FirstOrDefault();

5) 如果length==-1,则会显示列表的总计数,以便显示所有行。

对我来说,更改这些参数中的前3个起作用:

dom: 'ZBlrtip',
lengthMenu: [[100, 200, -1], [100, 200, "All"]],
bLengthChange: true,
order: [8, "desc"],
paging: true,
pageLength: 100,
serverSide: true