我试图将数据检索到我的数据表(jqGrid)
我能够获得包含所有列和正确数据的JSON格式。
但是,我无法将其加载到表格本身..
这是我的aspx文件代码:
$(document).ready(function () {
$("#jqGrid").jqGrid({
url: "ajaxWebService.asmx/LoadData",
mtype: "GET",
loadonce: true,
datatype: "json",
colModel: [
{
label: "Edit your item",
name: "actions",
width: 20,
formatter: "actions",
formatoptions: {
keys: true,
editOptions: {},
addOptions: {},
delOptions: {}
}
},
{ label: 'Date', name: "date", width: 20, editable: true },
{ label: 'Qty', name: "qty", width: 50, editable: true },
{ label: 'Product Name', name: "ProductName", width: 50, editable: true }
],
viewrecords: true,
width: 780,
height: 250,
rowNum: 10,
pager: "#jqGridPager"
});
});
这是我的函数背后的代码:
public string LoadData()
{
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Products", cn);
DataSet ds = new DataSet();
List<string> list = new List<string>();
da.Fill(ds);
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
DataTable dt = ds.Tables[0];
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
string jsonString = js.Serialize(rows);
return "{ \"rows\":" + JsonConvert.SerializeObject(rows) + "}";
}
答案 0 :(得分:0)
您发布了服务器代码的代码片段。我想你做了太多的JSON序列化。我建议您使用{/ 3}}或IE / Chrome / Firefox的开发者工具(按 F12 启动,然后使用“网络”选项卡)来跟踪客户端和服务器之间的HTTP流量。 / p>
服务器响应正文中的正确格式化数据可能是
[
{"date", "2015-03-09", "qty": 2, "ProductName": "foo"},
{"date", "2015-03-10", "qty": 5, "ProductName": "bar"}
]
或
"rows": [
{"date", "2015-03-09", "qty": 2, "ProductName": "foo"},
{"date", "2015-03-10", "qty": 5, "ProductName": "bar"}
]
如果您在每个"
(我的意思是\"
)之前看到一些额外的反斜杠,那么您进行了不需要的 JSON序列化,您应该删除致电JsonConvert.SerializeObject
。 LoadData
函数的返回值应从string
更改为object
。
下一个典型问题可能是在{"d": "..."}
中包装服务器响应的结果。在这种情况下,您需要使用jsonReader
参数,该参数通知jqGrid从响应的d
属性获取响应的重要部分:
jsonReader: { repeatitems: false, root: "d" }
或
jsonReader: { repeatitems: false, root: "d.rows" }
取决于服务器响应的确切格式。