如何在asp.net中使用JSON和JQuery从WebMethod返回DataTable?

我是JSON新手。 我创建了一个示例,它从WebMethod返回String并将返回的值赋给asp.net Label控件。

示例JSON返回String:

    $(document).ready(function() { $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", url: "JSONSample.aspx/DisplayData", data: "{}", dataType: "json", success: function(data) { //alert("hi"); $("#ctl00_MainContent_lbltxt").text(data.d); }, error: function(result) { alert("Error"); } }); });      

在.cs文件中(返回String):

 [WebMethod] public static string DisplayData() { return DateTime.Now.ToString(); } 

这很好用。

如何使用JSONJQuery访问DataTable

 [WebMethod] public static DataTable DisplayData() { DataTable dt = new DataTable(); return dt.GetData(); } 

我想使用JSON和JQuery返回DataTable并将GridView / Access绑定到DataTable的每一行 。 请建议我使用JSON Return DataTable的正确方法。

我看过一些使用handlers示例和一些使用WebMethod示例。 哪一个使用?

一个是另一个有什么好处。

帮助感谢!

这是我通常的做法。我将数据表内容加载到字典中,序列化它,一切正常。您可以修改代码以满足您的需求。

  [WebMethod] public string GetQueryInfo() { String daresult = null; DataTable yourDatable = new DataTable(); DataSet ds = new DataSet(); ds.Tables.Add(yourDataTable); daresult = DataSetToJSON(ds); return daresult; } public string DataSetToJSON(DataSet ds) { Dictionary dict = new Dictionary(); foreach (DataTable dt in ds.Tables) { object[] arr = new object[dt.Rows.Count + 1]; for (int i = 0; i <= dt.Rows.Count - 1; i++) { arr[i] = dt.Rows[i].ItemArray; } dict.Add(dt.TableName, arr); } JavaScriptSerializer json = new JavaScriptSerializer(); return json.Serialize(dict); } 

在你的aspx上。

  $.ajax({ type: "POST", url: 'Webservices/GetQueryInfo', data: {}, contentType: "application/json; charset=utf-8", dataType: 'json', success: function (data) { var objdata = $.parseJSON(data.d); // now iterate through this object's contents and load your gridview } }); 

关于如何使用java脚本或jquery加载网格视图有很多教程。这至少会给你一个起点。你可以在这里找到一个很好的例子。使用gridview做CRUD操作请看这里的链接