不能在 DataTable 上定义超过 9 个列

Can't define more than 9 colums on DataTable

向上编辑:我在另一个项目上试过了。同样的问题,当我尝试将它与 10 个数据列一起使用时,它给出了相同的错误,https://datatables.net/manual/tech-notes/7。但是我的问题没有定义。现在我确定这与后端无关。此外,当我将两个数据粘贴到一列并将这 10 列降低到 9 列时,它仍然有效。它肯定是关于列号的。


我在我的项目中使用 Jquery 数据 Table。我的大多数 table 的列数很少,但今天我尝试使用具有 10 列的 table。经过长时间的研究和测试,我发现了一个奇怪的问题,当我定义超过 9 列时,它甚至不会触发获取数据的 JsonResult 操作,但是当我尝试从 DataTable 脚本中删除其中一个数据列时,它会正常启动。它不依赖于要删除的数据列。这全都与列数有关。超过 9 列意味着它不起作用。

我尝试使用 "scrollX" 选项并为列提供低宽度值。我找不到任何其他解决方案。

这是我的数据示例Table脚本:

$(document).ready(function () {
    var table = $('#tblExample').DataTable({
        "scrollX": true,
        "ordering": false,
        "searching": false,
        "serverSide": true,
        "info": false,
        ajax: {
            "url": "/ExampleRoute/ExampleController/ExampleAction",
            "data": function (d) {
                d.tofind= $("#txtToFind").val()
            }
        },
        columns: [
        { data: "Data1" , width:"%5" },
        { data: "Data2" , width:"%5" },
        { data: "Data3" , width:"%5"},
        { data: "Data4" , width:"%5"},
        { data: "Data5" , width:"%5"},
        { data: "Data6" , width:"%5"},
        { data: "Data7" , width:"%5"},
        { data: "Data8" , width:"%5"},
        { data: "Data9" , width:"%5"},
        { data: "Data10" , width:"%5"},            
        ],
        fixedColumns: true,
        responsive: true
    });

});

这是我的例子 Table Html

<table id="tblExample">
                <thead>
                    <tr>
                        <th class="example1">Data1Col</th>
                        <th class="example2">Data2Col</th>
                        <th class="example3">Data3Col</th>
                        <th class="example4">Data4Col</th>
                        <th class="example5">Data5Col</th>
                        <th class="example6">Data6Col</th>
                        <th class="example7">Data7Col</th>
                        <th class="example8">Data8Col</th>
                        <th class="example9">Data9Col</th>
                        <th class="example10">Data10Col</th>
                    </tr>
                </thead>
            </table>

这与我所说的 Controller/Action 无关。当我尝试使用 9 列时,它工作得很好,触发 ExampleController/ExampleAction 但是当超过 9 个数据列时,它甚至不会触发此操作。此外,它与 <th> 数字无关,我尝试使用更多和更少的数据列,同样只有当少于 10 列时它才有效。有没有什么办法可以让我使用更多的数据列呢

好的,我发现问题出在 DataTable 的 ajax 发送的请求字符串上。当你想要 return 太多数据到 DataTable 时,它​​会使你的查询字符串很长并阻止从 [HttpGet] 操作中获取数据。如果您遇到这个问题,您必须将 table ajax 类型更改为 POST 并且您还必须将控制器中的操作定义为 [HttpPost].

这是因为您的查询字符串长度在增加。您必须在 web.config 中增加查询字符串的大小。它会解决这个问题。

<system.webServer>
<security>
<requestFiltering>
<requestLimits maxQueryString="32768"/>
</requestFiltering>
</security>
</system.webServer>

我已经用其他方式解决了,有两个修改: - [HttpPost] 控制器中的动作 - "type": "POST" 在 ajax 调用 DataTable