jqgrid保存从服务器获取的json数据

问题:服务器端传过来的json数据如下

{
    "total": 1,
    "records": 4,
    "rows": [{
        "sex": 1,
        "pin_pai": "大众",
        "status": 1,
        "cheng_shi": "吉林省长春市",
        "last_login_date": null,
        "last_login_ip": null,
        "type": 1,
        "id": 300,
        "user_name": "userTest",
        "rownum_": 2,
        "company_name": "大飞公司",
        "address": null,
        "user_real_name": "test2",
        "bindcom": [{
            "code": "S23424",
            "name": "xx公司1"
        }, {
            "code": "S34234",
            "name": "xx公司2"
        }, {
            "code": "S3123S",
            "name": "xx公司3"
        }, {
            "code": "S354221",
            "name": "xx公司4"
        }, {
            "code": "SCD2322",
            "name": "xx公司5"
        }]
    }],
    "errcode": 0
}

用jqGrid的getRowData方法获取到的数据里并不包含bindcom节点,,原来jqgrid根据colModel将数据给处理了,而我偏偏要获取这些数据,,肿么办?难不成需要用ajax再获取一次?

在网上找到了一些解决方法

我找到了一种麻烦一点的方法 首先用getGridParam('data')获取jqGrid的数据列表 然后根据rowid到列表去取, getGridParam('data')[rowid - 1]

关键是jsonReader{ id: idName }中的idName,在colModel中不能有一个字段名称跟跟idName一样 如果字段列表没有idName字段,则rowid为1, 2, 3... 如果字段列表中有idName字段,则rowid为该字段的值

这时候就等循环getGridParam('data')去找出对应的数据了 来源:http://cache.baiducontent.com/c?m=9d78d513d99b02fa18b6c2690d6782315f14dd262bd6a0432c92c05f931503001a3af4bb56356100c4b27a7070df5e289be73702207253a0efbe9f3aaaace45e3bcf676a7f46c00750c418dcd65b759161875a9efe58b1e6e732e4f28595c2120e8808543b9df180580310c868f112&p=882a9546d18317fe0be296274b55cd&newp=aa6c8f16d9c150e71abd9b7e0e1186231610db2151d4d7043796&user=baidu&fm=sc&query=jqgrid+getrowdata+json+%C6%E4%CB%FC%CA%FD%BE%DD&qid=d08893da0000576b&p1=1

可惜试用了一下,发现这个方法在新版本的JQ里并不好使,他的方法只适用本地数据源

在网上搜了好久也未找到好的解决方案,在官方文档中也没有发现,于是只好阅读源码!

结果不到3分钟,这个问题就解决了,,,

原来jqgrid在加载完数据的时候会触发loadComplete事件,而原始的JSON数据也会在这个事件中传过来,,于是:

var dgData = null;

......

......
loadComplete : function(data) {
                        dgData = data;
}

再安照网上说的方法即可搞定:即dgData[rowid-1] 这样就可以获取选中行的原始数据了.

关键是jsonReader{ id: idName }中的idName,在colModel中不能有一个字段名称跟跟idName一样 如果字段列表没有idName字段,则rowid为1, 2, 3... 如果字段列表中有idName字段,则rowid为该字段的值

results matching ""

    No results matching ""