今天用easyui的datagrid来加载数据,不是很顺利,根据捕捉的HTTP通信记录以及对easyui的跟踪发现加载数据需要满足下列几个要求:
1、datagrid通过url获取的必须是json格式的对象,不能是json字符串。
通过Fidder工具截获的数据必须是如下格式:
{"total":1,"rows":[{"CouponSupplyId":280002,"ReceivedCount":0,"IsValid":1}]}
不能是如下的字符串格式:
"{\"total\":1,\"rows\":[{\"CouponSupplyId\":280002,\"ReceivedCount\":0,\"IsValid\":1}]}"
2、对象必须只有两个元素:total和rows,而且这两个必须全小写。其中,total表示记录总数,rows表示对象集合。
基于C#的MVC框架,在Controller代码中可以使用Controller.Json来将对象转换成Json对象传递到客户端,例如:
public ActionResult QueryCouponSupplies()
{
int pageSize = int.Parse(Request.Form["rows"].ToString().Trim());
int pageIndex = int.Parse(Request.Form["page"].ToString().Trim());
Hashtable hashtable = new Hashtable();
hashtable["sessionId"] = "";
hashtable["onlyValid"] = 0;
hashtable["pageSize"] = pageSize;
hashtable["pageIndex"] = pageIndex;
string json = JsonHelper.Serialize(hashtable);
string retJson = HttpHelper.PostForJson("http://localhost/vme", "CouponService.svc", "QueryCouponSupplies", json);
string jsonResult = JsonHelper.GetString(retJson);
EasyUIGridResult<List<CouponSupply>> results = JsonHelper.DeserializeObject<EasyUIGridResult<List<CouponSupply>>>(jsonResult);
return Json(results, JsonRequestBehavior.AllowGet);
}