在使用easyui的DataGrid时,需要返回指定格式的JSON,格式如下:
{
"total":28,
"rows":[ ..... ]
}
其中:
total 总记录数
rows 当前加载的数据
在SQLServer 还不支持JSON数据前,我们一般需要:
1、定义一个包含total和rows的类;
2、检索总记录数和需要加载的数据并赋给上面定义类的实例;
3、将对象序列化为JSON数据
而SQLServer支持JSON后,我们可以由数据库处理需要返回的数据,形式如下:
SELECT JSON_VALUE((SELECT COUNT(1) AS total FROM VendorBaseInfo FOR JSON AUTO), '$[0].total') total,
(SELECT TOP 5 CompanyFullName FROM VendorBaseInfo FOR JSON AUTO) rows
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
其中:
1、使用JSON_VALUE从对象中提取记录数;
2、使用WITHOUT_ARRAY_WRAPPER去掉方括号;
3、由于最外层的SELECT并没有直接从表中检索数据,所以必须使用JSON PATH,否则会报错。
返回的结果如下:
{
"total":"5982",
"rows":[
{"CompanyFullName":"广州水泥生产公司"},
{"CompanyFullName":"广州振中建设有限公司"},
{"CompanyFullName":"广东赛博威信息科技有限公司"},
{"CompanyFullName":"广东赛百威信息科技有限公司"},
{"CompanyFullName":"广州市建安实业有限公司"}
]
}
Web服务器只需要将数据库返回JSON给浏览器即可,这样大大简化了Web的处理过程。