Json Данные не загружаются в jqGrid с пружиной 3 MVC - PullRequest
0 голосов
/ 10 декабря 2010

При нажатии кнопки я пытаюсь загрузить jqgrid с типом данных json.Я перепробовал много способов загрузки данных, но он не работает и отображает пустую сетку.Пожалуйста, сообщите, что мне здесь не хватает.

Моя сетка

$("#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;

Ответы [ 2 ]

0 голосов
/ 12 декабря 2010

Попробуйте явно установить все свойства вашего jsonReader.Вот так

jsonReader : {
      root: "rows",
      page: "page",
      total: "total",
      records: "records",
      repeatitems: false,
      cell: "cell",
      id: "id"
}

Что у вас есть:

jsonReader: {
  repeatitems : false,    
  root:"rows",
  cell: "",
  id: "0"
} 

Почему идентификатор установлен на 0 ?Как jqGrid узнает, что это за идентификатор из ваших данных JSON?Кроме того, почему вы удалили свойства total , page , cell ?

Формат JSON, который я возвратил из своего приложения Spring MVC 3, является точно следующим:

{
"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

0 голосов
/ 10 декабря 2010

Если ваши данные 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, и сетка будет заполнена данными.

В ваших данных существует еще одна проблема: у вас есть два элемента с одинаковым идентификатором . Таким образом, если вы выберете второй ряд, будет выбран первый. Таким образом, вы должны выбрать «dsId» в качестве идентификатора или создать данные с уникальными идентификаторами.

ОБНОВЛЕНО: Здесь - это тот же код, в котором фиксированы только имена, а здесь - это та же таблица, в которой также установлены идентификаторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...