数据表1.10.9 + c#WebApi2

时间:2015-11-24 21:09:56

标签: c# asp.net-web-api datatables-1.10

我在使用Datatables.net 1.10.9和WebApi Controller时遇到了麻烦。

我写了一个简单的Datatable示例:

    $(document).ready(function () {
    $('#tableJQDataTable1').DataTable({
        "processing": true,
        "serverSide": true,
        "ajax": {
            "type": 'POST',
            "url": '/api/prova/LoadData',
            "dataSrc": function (json) {
                var ret = JSON.parse(json);
                return ret;
            }
        },
        "autoWitdh": true,
        "scrollY": 200,
        "scrollCollapse": true,
        "lengthChange": true,
        "lenghtMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
        "paging": true,
        "pageLength": 20,
        "pagingType": "full_numbers",
        "columns": [
           { "data": "CodiceColore" },
           { "data": "Descrizione" }
        ]
    });
});

WebApi控制器是:

    [HttpPost]
    public string LoadData(DTParameters param)
    {
        string retValue = string.Empty;

        using (TestDataController m_dc = new TestDataController())
        {
            m_dc.Initialize();
            IQueryable<AnagraficaColori> m_anagraficaColori = m_dc.GetColori();

            var m_data = m_anagraficaColori.ToList();

            DTResult<AnagraficaColori> result = new DTResult<AnagraficaColori>
            {
                draw = param.Draw,
                data = m_data,
                recordsFiltered = m_data.Count(),
                recordsTotal = m_data.Count()
            };

            retValue = JsonConvert.SerializeObject(result);
        }

        return retValue;
    }

我得到了DTParameters和DTResult&lt;&gt;例如:https://www.echosteg.com/jquery-datatables-asp.net-mvc5-server-side

我没有使用MVC应用程序进行测试,而是使用配置为使用WebApi的简单WebForms应用程序。

问题是我无法显示数据。

WebApi控制器的返回值为:

{"draw":1,"recordsTotal":1,"recordsFiltered":1,"data":[{"CodiceColore":"C110OP","Descrizione":"Ciliegio C001 "}]}

所以它似乎是正确的形式,包含数据表所需的所有返回参数。

如果我在dataSrc函数中放置断点,我会看到包含此​​值的ret值:

Object {draw: 1, recordsTotal: 1, recordsFiltered: 1, data: Array[1]}

这似乎没问题。

但是,Datatables显示消息:“找不到匹配的记录”,并且没有显示任何内容。

我错过了什么?

问候,朱塞佩。

2 个答案:

答案 0 :(得分:1)

您既不应该设置type也不应该尝试解析响应。

"ajax": {
   "url": "/api/prova/LoadData",
}

然后您的代码有效 - &gt;的 http://jsfiddle.net/rdhkf2rk/

答案 1 :(得分:0)

我认为您应该在Ajax调用中使用GET请求而不是POST请求。

"ajax": {
        "type": 'GET',
        "url": '/api/prova/LoadData',
        "dataSrc": function (json) {
            var ret = JSON.parse(json);
            return ret;
        }
    },