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列的情况下才能工作。有没有让我使用更多数据列的解决方案。
答案 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”