【问题标题】:jqGrid and JSON readerjqGrid 和 JSON 阅读器
【发布时间】:2010-09-01 23:51:30
【问题描述】:

我对 jQuery 还很陌生,刚开始使用 jqGrid。我查看了 jqGrid 文档,以弄清楚如何在我的网格中以 JSON 格式显示我收到的一些数据,但无济于事。当我创建网格时,它会显示正确的标题、寻呼机信息等,并通过 Firebug 显示,我可以看到 JSON 数据的请求和响应。下面的 jsonReader 是我尝试过的众多方法之一,在函数回调中,我可以记录我收到的特定值,这样我就知道我正在获取数据。

将下面指定的 JSON 加载到 jqGrid 中的正确方法是什么?

以下是相关代码:

HTML:

<div id="dataInfo">
    <table id="dataTable"></table>
    <div id="dataTablePager"></div>
</div>

JS

jQuery("#dataTable").jqGrid({
              url: 'http://<snip>',
              mtype: 'GET',
              datatype: 'json',
              jsonReader: {
                  root: 'ipResponses',
                  id: 'startIP',
                  repeatitems: false,
                  page:  function(obj) { return 1; },
                  total: function(obj) { return 1; },
                  records: function(obj) { return obj.ipInfo.ipResponses.length; },
                  userdata: "userData"
              },
              colNames: ['StartIP', 'EndIP'],
              colModel: [
                  {
                      name: 'startIP',
                      index: 'startIP',
                      width: 55
                  }, 
                  {
                      name: 'endIP',
                      index: 'endIP',
                      width: 55
                  }
              ],
              pager: '#dataTablePager',
              rowNum: 8,
              rowList: [25,50,100],
              sortname: 'startIP',
              sortorder: 'asc',
              viewrecords: true,
              caption: 'Data',
              pgtext:"Page {0}"
          });

JSON

{
    "ipInfo": { 
        "queryStartIP": "4.4.4.0", 
        "queryEndIP": "4.4.4.256", 
        "ipResponses": [
            { "startIP": "4.4.4.1", "endIP": "4.4.4.5"},
            { "startIP": "4.4.4.10", "endIP": "4.4.4.15"}
        ]
    }
}

【问题讨论】:

    标签: jquery json jqgrid


    【解决方案1】:

    您的主要问题是 jsonReader 中的一些小变化。例如可以是

    jsonReader: {
        root: 'ipInfo.ipResponses',
        id: 'startIP',
        repeatitems: false,
        page:  function(obj) { return 1; },
        total: function(obj) { return 1; },
        records: function(obj) { return obj.ipInfo.ipResponses.length; },
    }
    

    您可以在http://www.ok-soft-gmbh.com/jqGrid/ipInfo.htm 下看到带有一些外观变化的相同 jqGrid。

    【讨论】:

    • 太棒了!我知道我必须靠近。非常感谢。
    • 我还有一个问题。我在 ipInfo 对象中有另一个具有相似数据的对象,但它不在数组中。基本上它将是每个 ipInfo 对象中的单个对象(称为 newObj: {x:10, y:10}),我将为其返回许多 ipInfo 对象。
    • 啊……不用担心,我想通了。它显然必须是一个数组,所以我将根更改为根: function(obj) { return [obj.ipInfo.newObj]; } 有效。再次感谢您的帮助。
    • @RC:一般来说,最好在服务器端专门为 jqGrid 生成 JSON 数据。如果不可能,在大多数情况下,可以对jsonReader 的数据进行解码。如果您发布 JSON 数据的确切示例,colModel 并说明您希望在哪一列中放置哪些信息,我可以建议您相应的解决方案。为了有更多的位置(对于问题和答案),在新问题中这样做可能更容易。
    • 是的,我可能应该在我的应用程序的控制器中对其进行格式化以返回到网格。我会试一试,如果我还有其他问题,我会发布一个新问题并在这里发表评论,这样你就可以解决问题了。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    相关资源
    最近更新 更多