2017-04-11 39 views
0

我需要創建一個數據表(jquery的)結合AJAX(C#的WebMethod)綁定jquery的數據表,以C#WEBMETHOD

1-的WebMethod返回JSON

public string GetProjects() 
    { 

     DataTable dt = new DataTable("ProjectData"); 
     string Conn = System.Configuration.ConfigurationManager.ConnectionStrings["GPS_TrackingConnectionString"].ConnectionString; 

     SqlConnection conn = new SqlConnection(Conn); 

     conn.Open(); 

     SqlCommand comm = new SqlCommand("SP_GetAll_Projects", conn); ///+ branch, conn); 
     comm.CommandType = CommandType.StoredProcedure; 

     dt.Load(comm.ExecuteReader()); 
     conn.Close(); 

     DataSet ds = new DataSet(); 
     ds.Tables.Add(dt); 
     JavaScriptSerializer js = new JavaScriptSerializer(); 
     //return ds.GetXml(); 
     //Context.Response.Write(js.Serialize(dt)); 
     var list = JsonConvert.SerializeObject(dt, 
Formatting.None, 
new JsonSerializerSettings() 
{ 
    ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore 
}); 

     return list; 
     // return (js.Serialize(dt)); 
    } 
} 

2-客戶端腳本

$(document).ready(function() { 
     $("#myTable").dataTable({ 
      "bJQueryUI": true, 
      "sPaginationType": "full_numbers", 
      "bServerSide": true, 
      "sAjaxSource": "Query.asmx/GetCars", 

      "fnServerData": function (sSource, aoData, fnCallback) { 
       $.ajax({ 
        "type": "POST", 
        "dataType": 'json', 
        "contentType": "application/json; charset=utf-8", 
        "url": sSource, 
        // "data": "{'sEcho': '" + aoData[0].value + "'}", 
        "success": function (msg) { 
         alert(msg.d); 
         fnCallback(msg.d); 
        } 
       }); 
      }, 
      "columns": [ 
     { "data": "Name" } 

      ] 

     }); 
    }); 

3 HTML

 <table id="myTable" width="100%"> 
      <thead> 
       <tr> 

        <th>Name</th> 

       </tr> 
      </thead> 

     </table> 

4 json結果

此XML文件似乎沒有任何與其關聯的樣式信息。文檔樹如下所示。 [{「id」:1,「Name」:「mh」,「StartDate」:null,「EndDate」:null},{「id」:2,「Name」:「rf」,「StartDate」 null,「EndDate」:null}] 4-目前的情況 成功顯示正確數據的警報 但表不顯示數據我的問題是如何告訴數據表,表的列名是否轉到數據列名 NO控制檯錯誤

謝謝

回答

0

試試這個

var Table1 = $('#myTable').DataTable({ 
     ajax: { 
      url: "Query.asmx/GetCars", 
      type: "POST", 
      "datatype": "json", 
      dataSrc: "" 
     }, 
     "columns": [ 
       { "data": "Name", "name": "Name" } 
     ], 
     "bDestroy": true, 
     "serverSide": true, 
     "pageLength": 25, 
     "processing": true, 
     "searching": false, 
     "bSort": false, 
    }); 




<table id="myTable" width="100%"> 
     <thead> 
      <tr> 
       <th>Name</th> 
      </tr> 
     </thead> 
     <tbody></tbody></table> 
+0

無效JSON響應響應(<字符串的xmlns = 「http://tempuri.org/」> [{ 「ID」:1, 「Name」:「mh」,「StartDate」:null,「EndDate」:null},{「id」:2,「Name」:「rf」,「StartDate」:null,「EndDate」:null}] ) –

+0

請檢查您的JSON格式,請參閱https://datatables.net/manual/data/ – VijayWebDeveloper

0

如果您的JSON響應是[{"id":1,"Name":"mh","StartDate":null,"EndDate":null},{"id":‌​2,"Name":"rf","Start‌​Date":null,"EndDate"‌​:null}]

改變您的代碼以

$(document).ready(function() { 
    $("#myTable").dataTable({ 
     "bJQueryUI": true, 
     "sPaginationType": "full_numbers", 
     "bServerSide": true, 
     "sAjaxSource": "Query.asmx/GetCars", 

     "fnServerData": function (sSource, aoData, fnCallback) { 
      $.ajax({ 
       "type": "POST", 
       "dataType": 'json', 
       "contentType": "application/json; charset=utf-8", 
       "url": sSource, 
       // "data": "{'sEcho': '" + aoData[0].value + "'}", 
       "success": function (msg) { 
        alert(msg.d); 
        fnCallback(msg.d); 
       } 
      }); 
     }, 
     "columns": [ 
     { data: 'id' }, 
     { data: 'Name' }, 
     { data: 'StartDate' }, 
     { data: 'EndDate' }] 
    }); 
}); 
+0

這是響應無效的json響應響應(; [{ 「ID」:1, 「名稱」: 「MH」, 「開始日期」:空, 「結束日期」:空},{ 「ID」:2, 「名稱」: 「RF」,「開始日期「:null,」EndDate「:null}]) –

+0

我認爲響應是XML內部XML字符串標記warrped我發送整個響應 –

+0

數據顯示警報但不是在數據表中控制檯錯誤datatables.min .js:57 Uncaught TypeError:無法在xb(datatables.min.js:57)處讀取undefined 的屬性「長度」(e = c.length; d