0

Q1.json 正在工作(index.json)。但我无法在 jqgrid 中显示。我认为 colmodel 名称是问题。是否要求 colModel 名称来自数据库字段?我想在 jqgrid 中显示来自我的选择语句,而这些变量来自不同的表。不仅是一张桌子,而是三张桌子。

Q2.同一行应该显示在 jqgrid 但来自不同的表。可能吗?

<script type="text/javascript">
jQuery(document).ready(function(){ 
  jQuery("#list").jqGrid({

    url:'{{=URL(r=request,f='call',args=['json','index'])}}',
      data: "{}",
    datatype: 'json',
    mtype: 'GET',
      contentType: "application/json; charset=utf-8",
      complete: function(jsondata, stat) {
        if (stat == "success") {
            var thegrid = jQuery("#list")[0];
            thegrid.addJSONData(JSON.parse(jsondata.responseText).d);
        }
    }, 
    colNames:['code','name','max','min','quantity','amount'],
    colModel :[ 
      {name:CODE',index:'CODE', width:55}, 
      {name:'Name', index:'Name',width:100}, 
      {name:'MAX(table2.hour)', index:'MAX(hour)',width:100},
      {name:'MIN(tabl2.hour)', index:'MIN(hour)',width:100}, 
      {name:'SUM(quantity)', index:'SUM(quantity)',width:180}, 
      {name:'SUM(amount)', index:'SUM(amount)',width:180}
    ],
    hidegrid: false,
    scrollOffset:0,
    pager: '#pager',
    rowNum:100,
    shrinkToFit:false,
    //rowList:[10,20,30,50],
    //sortname: 'id',
   //sortorder: 'desc',
    viewrecords: false,
    width: "100%",
    height: "100%",
    caption: 'SALES Grid'
  }); 


}); 
</script>

{“行”:[0,{“table1”:{“名称”:“dyon”},“_extra”:{“MAX(table2.hour)”:“20130514214301484”,“MIN(table2.hour)”: “20130514052610093”,“SUM(table2.quantity)”:2115.854,“SUM(table2.amount)”:90089.15},“table3”:{“CODE”:1800}}]}

注意:我只想在一页中显示数据。当我运行 index.html 时,它包含行但它是空白的,并且每个单元格有一行包含 0。当我运行 index.json 时,它包含我需要的数据。我是python的新手。谢谢!

4

1 回答 1

0

第一个问题是您使用了许多不存在的 jqGrid 选项(请参阅文档):data, contentType, complete. 您删除选项或使用其他一些选项来执行您可能尝试执行的操作。

第二个问题是 JSON 输入中属性的使用,其中包含点(SUM(table2.quantity)例如)。为了能够读取此类属性,您必须将其定义jsonmap为函数。例如

jsonmap: function (obj) {
    return obj._extra["SUM(table2.quantity)"];
}

因为 JSON 数据具有0作为第一个元素,所以您必须将上述代码修复为类似

jsonmap: function (obj) {
    return typeof obj === "object"? obj._extra["SUM(table2.quantity)"]: "";
}

第一个演示演示了结果:

在此处输入图像描述

最好的办法是修复您的服务器代码以从数组中删除不需要的0项目。rows如果您不能在服务器端执行此操作,您可以在beforeProcessing回调内部的客户端执行此操作。

演示显示

在此处输入图像描述

它使用以下 JavaScript 代码

$("#list").jqGrid({
    url: "CrazyGirl.json", // need be changed to youth
    datatype: "json",
    ajaxGridOptions: { contentType: "application/json" },
    serializeGridData: function (data) {
        return JSON.stringify({}); // send empty object (???)
    },
    colNames: ["code", "name", "max", "min", "quantity", "amount"],
    colModel: [
        {name: "code", width: 55, jsonmap: "table3.CODE"},
        {name: "name", width: 100, jsonmap: "table1.Name"},
        {name: "max", width: 120,
            jsonmap: function (obj) {
                return typeof obj === "object"? obj._extra["MAX(table2.hour)"]: "";
            }},
        {name: "min", width: 120,
            jsonmap: function (obj) {
                return typeof obj === "object"? obj._extra["MIN(table2.hour)"]: "";
            }},
        {name: "quantity", width: 100,
            jsonmap: function (obj) {
                return typeof obj === "object"? obj._extra["SUM(table2.quantity)"]: "";
            }},
        {name: "amount", width: 100,
            jsonmap: function (obj) {
                return typeof obj === "object"? obj._extra["SUM(table2.amount)"]: "";
            }}
    ],
    jsonReader: { repeatitems: false },
    hidegrid: false,
    pager: "#pager",
    rowNum: 1000,
    shrinkToFit: false,
    height: "100%",
    caption: "SALES Grid"
  });
于 2013-07-26T08:40:56.397 回答