2016-11-11 20 views
0

ご存じのように、ASP.NETはdパラメータでajax応答を返します。私はこれを変更しようとした:ASP.NETのDataTableで処理されるajaxレスポンスを変更するにはどうすればよいですか?

dataSrc: function (json) { 
    return json.d.data; 
} 

しかし、私はそれを実行したときに、私はこの記事の中に添付された画像上で見ることができるように、それはjquery.dataTables.js:4108 Uncaught TypeError: Cannot read property 'length' of undefined(…).を示しています。私はその部分をチェックして、私はdataSrcがすべての応答を本当に変えないと結論づけます。

enter image description here

これは、私がDataTableののAJAXオプションのためにしたものです:

dataTable: { 
    ajax: { 
     type: 'POST', 
     url: window.location.href + '/GetData', 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     dataSrc: function (json) { 
      return json.d.data; 
     }, 
     ..... //other options 
} 

ので、DataTableのによって処理されるすべての応答を変更するための他のオプションはありますか?

答えて

1

はあなたがdataSrcのでこれを試すことができます役立ちます願っています。この解決策は、linkに基づいています。

"dataSrc": function (data) { 
    var json = $.parseJSON(data.d); 

    var myData = {}; 
    myData.draw = parseInt(json.draw); 
    myData.recordsTotal = parseInt(json.recordsTotal); 
    myData.recordsFiltered = parseInt(json.recordsFiltered); 
    myData.data = json.data; 

    return myData.data; 
} 
+0

チャームのように機能します。ありがとう@ saf21 :) –

+0

素晴らしいですが、それは私のために動作しません。私の質問http://stackoverflow.com/questions/40544765/jquery-datatable-pagination-and-filter-not-display-correctlyのリンクがここにあります。そこにあなたのdatatable構造を共有できますか?ありがとう。 – saf21

+0

これは実際にはまだ完全には機能していません。以前はデータを表示していましたが、たとえばフッターに「NaNレコードのNaNにNaNを表示しています」というメッセージが表示されます。あなたのような同じ失敗。 –

0

問題あなたは応答を解析していません。まず最初に、ajaxコールを区切り、解析後にその応答をaaData(datatable prop)に割り当てます。

表に表示するすべての列を指定する必要があることを確認してください。"aoColumns": [{ "mData": "YourColumnName1" }]を参照してください。これはあなたが

var ResponseData = CallAjaxMethod(YourUrl, "");//This will make Ajax call and get response 
    ResponseData = JSON.parse(ResponseData); //This will pars your response 

//'#tblId' this is table id where you want to show your table 
$('#tblId').DataTable({ 
     "bProcessing": true, 
     "bDestroy": true, 
     "bStateSave": true, 
     "aaData": ResponseData,//Its your response 
     "aoColumns": [ 
      { "mData": "YourColumnName1" }, 
      .... 
      { "mData": "YourColumnNamen }, 

     ] 
    }); 
関連する問題