点击按钮我试图用json datadtype加载jqgrid。 我尝试了很多方法来加载数据,但它失败并显示空网格。 请告知我在这里失踪的事。
我的网格
$("#bedata").click(function(){
jQuery("#list2").jqGrid({
url:'/mso/interop/interopcompanycfg/getDSAccounts?companyId=${interopcompcfg.company.id}',
datatype: "json",
mtype: 'GET',
colNames:['Id','DTCCID','COMPANYID','DTCCACCOUNTID'],
colModel:[
{name:'ID',index:'id', sortable:true, align:'center',width:90},
{name:'DTCCID',index:'dsId', sortable:true, align:'center',width:90},
{name:'COMPANYID',index:'companyId',sortable:true, align:'center', width:120},
{name:'DTCCACCOUNTID',index:'dsLegalEntityId', sortable:true, align:'center',width:130}
],
rowNum:10,
rowList:[10,20,30],
pager: '#pager2',
sortname: 'dsId',
viewrecords: true,
sortorder: "desc",
caption:"DS ACCOUNTS",
jsonReader: {
repeatitems : false,
root:"rows",
cell: "",
id: "0"
}
});
jQuery("#list2").jqGrid('navGrid','#pager2',{edit:true,add:true,del:true});
});
spring requestmapping
@RequestMapping(value="/getDSAccounts",method= RequestMethod.GET)
public @ResponseBody List<Vector<String>> getDSAccountsJSON(HttpServletRequest request,HttpServletResponse httpResponse) {
try{
UsersJsonDTO usersJsonDTO = new UsersJsonDTO();
usersJsonDTO.setPage("1");
usersJsonDTO.setRecords("8");
usersJsonDTO.setTotal("20");
Company cmp=(Company) request.getSession().getAttribute("company");
List<DSAccounts> message = interopService.getDSAccounts(cmp);
httpResponse.setContentType("text/javascript");
int i=0;
List<DTCCAccounts> rowJsonList = new ArrayList<DTCCAccounts>();
for (DSAccounts dsAccountDTO:message)
{
DTCCAccounts rowJson = new DTCCAccounts();
rowJson.setId(String.valueOf(i+1));
rowJson.setDsId(String.valueOf(dsAccountDTO.getDsId()));
rowJson.setCompanyId(String.valueOf(dsAccountDTO.getCompany().getId()));
rowJson.setDsLegalEntityId(dsAccountDTO.getDsLegalEntityId());
rowJsonList.add(rowJson);
}
usersJsonDTO.setRows(rowJsonList);
return usersJsonDTO;
答案 0 :(得分:0)
如果您的JSON数据包含
等元素{
"page": "1",
"records": "8",
"rows": [
{
"companyId": "1661",
"dsId": "72",
"dsLegalEntityId": "SELLSIDE01",
"id": "1"
},
{
"companyId": "1661",
"dsId": "74",
"dsLegalEntityId": "SELLSIDE03",
"id": "1"
}
],
"total": "20"
}
您应该将所有列的name
属性更改为您当前用于index
的值,并且网格将填充数据。
您的数据还存在一个问题:您有两个ID相同的元素。因此,如果您选择第二行,则将选择第一行。因此,您应该选择“dsId”作为id或生成具有唯一ID的数据。
答案 1 :(得分:0)
尝试显式设置jsonReader的所有属性。喜欢这个
jsonReader : {
root: "rows",
page: "page",
total: "total",
records: "records",
repeatitems: false,
cell: "cell",
id: "id"
}
你拥有的是:
jsonReader: {
repeatitems : false,
root:"rows",
cell: "",
id: "0"
}
为什么ID设置为 0 ? jqGrid如何知道您的JSON数据中的id是什么?另外,为什么要删除总,页面,单元格属性?
我从Spring MVC 3应用程序返回的JSON格式如下:
{
"total":"10",
"page":"1",
"records":"3",
"rows":[{"id":1,"firstName":"John","lastName":"Smith"},
{"id":2,"firstName":"Jane","lastName":"Adams"},
{"id":3,"firstName":"Jeff","lastName":"Mayer"}]
}
另外,我注意到你做了以下事情:
httpResponse.setContentType("text/javascript");
我没有在我的Spring 3 MVC中这样做。查看我在http://krams915.blogspot.com/2010/12/jqgrid-and-spring-3-mvc-integration.html
撰写的本教程