jqgrid,一个不错的网格插件,基于jquery框架,封装的比较好,数据上支持XML、Json以及数组。通过jqgrid你可以轻而易举的实现网格控件内数据的排序、分页、打印等等你想实现的功能。
看上去很美,但是实际使用中还是出现一些问题。本地数组形式可以绑定数据,但是用到Json异步传输时总是无法进行数据绑定。怎么办?开发周期压紧,只好在前台先用Json转成数组再进行数据绑定。虽然功能实现了但是心有余悸,仔细翻看jqgrid的介绍发现其对Json格式有严格要求!
json格式:
{ total: xxx, page: yyy, records: zzz, rows: [
{id:”1″,cell:[”Row 1:1″,”Row 1:2″,”Row 1:3″,”Row 1:4″]},
{id:”2″,cell:[”Row 2:1″,”Row 2:2″,”Row 2:3″,”Row 2:4″]},
{id:”3″,cell:[”Row 3:1″,”Row 3:2″,”Row 3:3″,”Row 3:4″]},
…]}
一般的形式还真好用,哈哈,难怪无法绑定。于是按照上面的格式又写了一个专用方法,OK了!
public string JsonForJqgrid(DataTable dt)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("{");
jsonBuilder.Append("total:5,page:1,records:" + dt.Rows.Count + ",rows");
jsonBuilder.Append(":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
jsonBuilder.Append("id:\""+Convert.ToString(i+1)+"\",cell");
jsonBuilder.Append(":[");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Rows[i][j].ToString());
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7383074/viewspace-586810/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7383074/viewspace-586810/