DataTables错误:“请求的未知参数”

时间:2014-03-02 13:05:44

标签: asp.net-mvc json jquery-datatables

var headers = [{ "mDataProp": "Agents" },{ "mDataProp": "Buyer" },{ "mDataProp": "Date" }];
$(document).ready(function () {   
    $('#data-table').dataTable({
        "bFilter": false,
        "bLengthChange": false,
        "iDisplayLength": 25,
        "bJQueryUI": true,
        "bServerSide": true,
        "bProcessing": true,
        "sPaginationType": "full_numbers",
        "aoColumns": headers,
        "sAjaxSource": '/report/TestPaging',         
    });
});

如果从代码中删除aoColumns,则会正常生成数据表,但是当我添加aoColumns时,我得到:

DataTables警告(表id ='data-table'):从第0行的数据源请求未知参数'Agents'

HTML:

<table id="data-table">
                <thead>
                    <tr>                          
                        <th>tmp</th>
                        <th>tmp</th>
                        <th>tmp</th>
                    </tr>
                </thead>

                <tbody>
                </tbody>
            </table>

如何配置标题名称?我需要它们进行分类。 它们必须与“th”标签相同吗? 来自我的控制器的Json响应是可以的,因为当我删除aoColumns时它呈现正常

我有string [] [](var data),每行有3个字符串,并将其作为

返回
  Json(new{
            sEcho = param.sEcho,
            iTotalRecords = visitRepository.Query.Count(),
            iTotalDisplayRecords = visitRepository.Query.Count(),
            aaData = data
        }, JsonRequestBehavior.AllowGet);

1 个答案:

答案 0 :(得分:2)

您遇到的错误是由JSON内容与aoColumns定义不匹配引起的。您在aoColumns 中定位的名称必须 与中的名称相同中每个对象的长度JSON 必须等于原始HTML表中的列数。有关说明,请参阅docs。在您的情况下,JSON应如下所示:

[{
  "Agents": "tM4Ga0zX",
  "Buyer": "ZKwMEiIa",
  "Date": "K3lS2yn9"
},
...]

...而你的JSON并没有遵循这个计划。如果您没有使用aoColumns,那么数据将按索引插入,而不是按名称插入 - 这就是为什么它在没有它的情况下为您工作的原因。

您可以按sTitle属性配置标题名称(标题):

aoColumns: [
  { mDataProp: "Agents", sTitle : "Agents" }, 
  { mDataProp: "Buyer", sTitle : "Buyer" },
  { mDataProp: "Date", sTitle : "Date" }
]

根据您的问题查看此演示 - &gt; http://jsfiddle.net/kLR7G/