jqGrid - 是否可以过滤 colModel 中 jsonmap 的值

2024-04-09

我正在使用 jqGrid,想知道 jqGrid 的 colModel 中的 jsonmap 的值是否可以具有过滤值。

ColModel

colModel:[
   {name:'fname',index:'action',jsonmap:'cells.cell.colname["fname"].value', width:50, align:"center", resizable:false}
]

JSON

{   
    "rows":[
        {

            "cells":
            {               
                "cell":{
                    "value":"Mark",
                    "colname": "fname"
                }
            }
        }
   ]
}

JSON 输入中“cells”属性的值作为数组

{   
    "rows":[
        {

            "cells":[
            {               
                "cell":{
                    "value":"Mark",
                    "colname": "fname"
                }
            }]
        }
   ]
}

与以下colModel不起作用

colModel:[
   {name:'fname',index:'action',jsonmap:'cells.cell.value', width:50, align:"center", resizable:false}
]

要放置多个列以及为什么建议添加过滤器- 我在映射 json 时遇到问题jsonmap具有以下结构。这就是为什么我问我们是否可以添加一个过滤器。

{   
    "rows":[
        {

            "cells":
            {               
                "cell":{
                    "value":"Mark",
                    "colname": "fname"
                },
                "cell":{
                    "value":"Strong",
                    "colname": "lname"
                },
                "cell":{
                    "value":"Hourly",
                    "colname": "emptype"
                }
            }
        }
   ]
}

UPDATED:JSON数据可以是

{
    "wrapper": {
        "rows": [
            {
                "cells": [
                    {
                        "value": "Mark",
                        "colname": "fname"
                    },
                    {
                        "value": "Strong",
                        "colname": "lname"
                    },
                    {
                        "value": "Hourly",
                        "colname": "emptype"
                    }
                ]
            },
            {
                "cells": [
                    {
                        "value": "Mark2",
                        "colname": "fname"
                    },
                    {
                        "value": "Strong2",
                        "colname": "lname"
                    },
                    {
                        "value": "Hourly2",
                        "colname": "emptype"
                    }
                ]
            }
        ]
    }
}

您可以使用jsonmap作为一个函数

jsonmap: function (item) {
    // item.cells.cell.colname is "fname"
    return item.cells.cell.value;
}

选项jsonReader: { repeatitems: false }另外还需要 jqGrid。

人们可以读取您发布的 JSON 输入(请参阅here http://www.ok-soft-gmbh.com/jqGrid/SK11-name-value.htm),但我还是不明白你的建议。为什么价值"cells"JSON 输入中的属性是对象而不是数组?为何选择该物业"cells"到底需要吗?您如何想象将更多内容作为一栏放置在其中?一般来说,您会看到在jsonmap功能,您可以从"rows"数组,因此您可以实现从数据中读取字段的任何算法。

UPDATED: 我写下一个演示 http://www.ok-soft-gmbh.com/jqGrid/SK11-name-value1.htm它读取您发布的 JSON 数据的最后一个版本。实现的想法保持不变——使用jsonmap作为一个函数。

柱模型可以是以下

colModel: [
    {name: 'fname', jsonmap: function (obj) { return getVaueByName(obj.cells, "fname"); }},
    {name: 'lname', jsonmap: function (obj) { return getVaueByName(obj.cells, "lname"); }},
    {name: 'emptype', jsonmap: function (obj) { return getVaueByName(obj.cells, "emptype"); }}
],
cmTemplate: {width: 70, align: "center", resizable: false},
gridview: true,
height: 'auto',
jsonReader: {
    root: "wrapper.rows",
    page: function () { return 1; },
    total: function () { return 1; },
    repeatitems: false
}

哪里的方法getVaueByName将被定义为

var getVaueByName = function (cells, colName) {
        var i, count = cells.length, item;
        for (i = 0; i < count; i += 1) {
            item = cells[i];
            if (item.colname === colName) {
                return item.value;
            }
        }
        return '';
    };
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jqGrid - 是否可以过滤 colModel 中 jsonmap 的值 的相关文章

随机推荐