2017-07-26 53 views
0

我做了一个演示,用jqGrid表创建动态列,但遇到了一些问题。这是jqGrid的代码片段:关于使用jgGrid创建动态列的问题

$.ajax(
    { 
     type: "get", 
     url: "reports/providerList", 
     dataType: "json", 
     success: function(result) 
     { 
      var colNames = result.rows.colNames; 
      var colModels = result.rows.colModels; 
      $(grid_selector).jqGrid('GridUnload'); 

      jQuery(grid_selector).jqGrid({ 
       url: 'reports/getData', 
       datatype: 'json', 
       mtype: 'get', 
       colNames: colNames, 
       colModel: colModels, 
       viewrecords : true, 
       rownumbers:true, 
       rowNum:15, 
       rowList:[15,30], 
       pager : pager_selector, 
       altRows: true, 
       loadComplete : function() { 
        var table = this; 
        setTimeout(function(){ 
         updatePagerIcons(table); 
         enableTooltips(table); 
        }, 0); 
       }, 
      }); 
     }, 
     error: function(x, e) 
     { 
      alert(x.readyState + " "+ x.status +" "+ e.msg); 
     } 
    }); 

我的后端控制器:

@GetMapping("/providerList") 
    @ResponseBody 
    public Map<String, Object> providerList(@RequestParam(value = "rows", required = false) Integer pageSize, @RequestParam(value = "page", required = false) Integer pageNumber){ 
     JQGridModel jqGridModel = new JQGridModel(); 
     Map<String, Object> map = new HashedMap(); 
     map.put("total", 4); 
     map.put("rows", jqGridModel); 
     map.put("records", 6); 
     return map; 
    } 

    @GetMapping("/getData") 
    @ResponseBody 
    public Map<String, Object> getData(){ 
     List<ColData> colDatas = new ArrayList<>(); 
     ColData colData1 = new ColData(2, "hello", new Date().toString(), "true", "admin"); 
     ColData colData2 = new ColData(5, "say", new Date().toString(), "false", "pechen"); 
     colDatas.add(colData1); 
     colDatas.add(colData2); 
     colDatas.add(colData2); 

     Map<String, Object> map = new HashedMap(); 
     map.put("total", 4); 
     map.put("rows", colDatas); 
     map.put("records", 6); 
     return map; 
    } 

在后端的数据格式:

public class JQGridModel { 
    private List<String> colNames; 
    private List<ColModel> colModels; 

    public JQGridModel() { 
     colNames = new ArrayList<>(); 
     colNames.add("id"); 
     colNames.add("name"); 
     colNames.add("createTime"); 
     colNames.add("status"); 
     colNames.add("updateBy"); 

     colModels = new ArrayList<>(); 
     ColModel colModel1 = new ColModel("id", "id", 60f, false, false); 
     ColModel colModel2 = new ColModel("name", "index", 60f, false, false); 
     colModels.add(colModel1); 
     colModels.add(colModel2); 
     colModels.add(colModel2); 
     colModels.add(colModel2); 
     colModels.add(colModel2); 
    } 
} 

但是我只拿到这个的结果,没有在显示数据一些栏目: enter image description here

我注意到了在调试模式下点击和/reports/getData。怎么回事,谁能帮忙?

回答

0

错误的来源在我看来似乎是JQGridModel构造函数的最后一行。您多次使用colModels.add(colModel2)。这是不对的。 colNames包含标签:显示在列标题中的文本。一个允许在colNames中使用重复项或空字符串。另一方面,colModel必须包含唯一name值不能为空,不能包含空格。

您必须更改JQGridModel构造函数colModels的代码,以填写名称,您当前使用它来填充colNames

+0

谢谢,它确实是错误的原因,'name'应该与colData中'field'相同。 –

+0

@DavePateral:不客气! – Oleg