2015-11-24 39 views
0

我遇到了Datatables.net 1.10.9和WebApi控制器的麻煩。Datatables 1.10.9 + c#WebApi2

我寫的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 <>在: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顯示消息:「找不到匹配的記錄」,並且沒有顯示任何內容。

我錯過了什麼?

問候,朱塞佩。

+0

也許你的URL'/ API/PROVA/LoadData'是錯誤的。 –

回答

0

我想你應該在你的Ajax調用中使用GET請求而不是POST請求。

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