无法在DataTable上定义超过9个列

时间:2017-09-22 11:36:51

标签: javascript jquery asp.net-mvc jquery-plugins datatables

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

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

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

以下是我的DataTable脚本示例:

$(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
    });

});

以下是我的表格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>

这不是我所说的控制器/动作。当我尝试使用9列时,它可以正常工作,触发ExampleController/ExampleAction但是当9个以上的数据列时,它甚至不会触发此操作。此外,它不是关于<th>数字,我尝试使用的数据列越来越少,同样只有少于10列的情况下才能工作。有没有让我使用更多数据列的解决方案。

3 个答案:

答案 0 :(得分:2)

好的,我发现问题是关于由DataTable的ajax发送的请求字符串。当您想要向DataTable返回太多数据时,它会使您的查询字符串很长并阻止从[HttpGet]操作中获取数据。如果您遇到此问题,则必须将表ajax类型更改为POST,并且还必须在控制器中将操作定义为[HttpPost]。

答案 1 :(得分:0)

这是由于您的查询字符串长度增加。你必须在web.config中增加查询字符串大小。它将解决问题。

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

答案 2 :(得分:0)

我用其他方式解决了两个修改: -[HttpPost]关于控制器中的操作 -“ type”:在DataTable中进行Ajax调用时为“ POST”