首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自JQGrid和Web2py的JSON数据

来自JQGrid和Web2py的JSON数据
EN

Stack Overflow用户
提问于 2013-07-25 07:48:56
回答 1查看 963关注 0票数 0

正在工作(index.json)。但我不能在jqgrid中显示。我认为colmodel名称是problem.Is,它要求colModel名称来自数据库字段?我想在jqgrid中显示来自我的select语句,而这些变量来自不同的表。不仅一张桌子,还有三张桌子。

Q2. table行应该显示在jqgrid中,但应该显示在不同的表中。有可能吗?

代码语言:javascript
复制
<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":{“最大(表2.小时)”:"20130514214301484",“最小(表2.小时)”:"20130514052610093",“和(表2.antity)”:2115.854,“SUM(table2.sum)”:90089.15},"table3":{“代码”:}}

注意:我想在一个页面中显示数据,only.when,我运行index.html,它包含行,但它是空的,每个cell.When都有包含0的行,我运行index.json,它包含我需要的数据。我是蟒蛇的新手。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-26 08:40:56

第一个问题是,您使用了许多不存在的jqGrid选项(参见文献资料):datacontentTypecomplete。您可以删除这些选项,或者使用一些其他选项来执行您可能尝试过的操作。

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

代码语言:javascript
复制
jsonmap: function (obj) {
    return obj._extra["SUM(table2.quantity)"];
}

因为JSON数据的第一个元素是0,所以您必须修复上面的代码,如下所示

代码语言:javascript
复制
jsonmap: function (obj) {
    return typeof obj === "object"? obj._extra["SUM(table2.quantity)"]: "";
}

第一个演示演示了结果:

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

演示显示器

它使用以下JavaScript代码

代码语言: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"
  });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17852050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档