JqG​​rid - 使用 formatDisplayField 选项

JqGrid - Using formatDisplayField Option

我在使用带有某些选项的 jqgrid 时遇到了问题,最好是给你看一张图片:

因此,当我构建 table body(使用 ajax 调用)时,我传递了一个隐藏字段。当对某些东西进行分组时,我想显示 'undefined' 单词所在的隐藏字段(组标题)。

有没有使用formatDisplayField的解决方案?

我有的是这样的:

groupingView : {
                    groupField : ['cpv'],
                    groupCollapse : true,
                    groupOrder: ['desc'],
                    plusicon: 'ui-icon-circle-plus',
                    minusicon: 'ui-icon-circle-minus',
                    formatDisplayField: [
                    function (value) { // Should be cpv_parent (hidden by default but sent to jggrid when instantiate)
console.log(value); // Contain CPV Grouped
console.log($(this)); // Contain [table#ajaxTable.ajaxTable.ui-jqgrid-btable, context: table#ajaxTable.ajaxTable.ui-jqgrid-btable, constructor: function, init: function, selector: "", jquery: "1.7.2"…]
                        //return String(displayValue).substring(0, 5);
                    }
                    ],
                    isInTheSameGroup: function (x, y) {
                        return String(x).substring(0, 5) === String(y).substring(0, 5);
                    }
                }

编辑 根据需要,这是我正在使用的示例数据形式(来自上次尝试(使用 userData)):

{"total":1,"page":1,"totalrecords":3,"userdata":{"98513295":"98000000-3"},"rows":[{"tipoConcurso":"Ajuste Directo (Regime Geral)","createdOn":"2014-04-23 16:19:56","valor":15000,"cpv":98513295,"cpvParent":"98000000-3"},{"tipoConcurso":"Ajuste Directo (Regime Geral)","createdOn":"2013-10-01 16:05:08","valor":15000,"cpv":98513295,"cpvParent":"98000000-3"},{"tipoConcurso":"Ajuste Directo (Regime Geral)","createdOn":"2013-09-03 17:34:39","valor":15000,"cpv":98513295,"cpvParent":"98000000-3"}]}

谢谢@Oleg :)

提前谢谢大家:)

此致, 马塞洛

你的问题有点难理解,因为你只显示了一些抽象的数字。我是这么理解你的。您按 cpv 字段进行分组,但您需要显示另一个字段 cpvParent,该字段可以根据 cpv 值获取。只需要一张从 cpv 得到 cpvParent 的地图。我不建议添加任何更昂贵的隐藏列。

所以我建议你更改数据

{
    "total": 1,
    "page": 1,
    "totalrecords": 3,
    "rows": [
        {
            "tipoConcurso": "Ajuste Directo (Regime Geral)",
            "createdOn": "2014-04-23 16:19:56",
            "valor": 15000,
            "cpv": 98513295,
            "cpvParent": "98000000-3"
        },
        {
            "tipoConcurso": "Ajuste Directo (Regime Geral)",
            "createdOn": "2013-10-01 16:05:08",
            "valor": 15000,
            "cpv": 98513295,
            "cpvParent": "98000000-3"
        },
        {
            "tipoConcurso": "Ajuste Directo (Regime Geral)",
            "createdOn": "2013-09-03 17:34:39",
            "valor": 15000,
            "cpv": 98513295,
            "cpvParent": "98000000-3"
        }
    ]
}

以下内容:

{
    "total": 1,
    "page": 1,
    "totalrecords": 3,
    "userdata": {
        "98513295": "98000000-3",
        "97123456": "97000000-2"
    }
    "rows": [
        {
            "tipoConcurso": "Ajuste Directo (Regime Geral)",
            "createdOn": "2014-04-23 16:19:56",
            "valor": 15000,
            "cpv": 97123456,
            "cpvParent": "98000000-3"
        },
        {
            "tipoConcurso": "Ajuste Directo (Regime Geral)",
            "createdOn": "2013-10-01 16:05:08",
            "valor": 15000,
            "cpv": 98513295
        },
        {
            "tipoConcurso": "Ajuste Directo (Regime Geral)",
            "createdOn": "2013-09-03 17:34:39",
            "valor": 15000,
            "cpv": 98513295
        }
    ]
}

formatDisplayField回调中你可以获得userData参数(参数名称是userData,但是JSON数据必须有userdata在其他情况下)。现在 userData[value] 会通过按键 "98513295":

得到你 "98000000-3"
groupingView: {
    groupField: ["cpv"],
    ...
    formatDisplayField: [
        function (value) {
            var userData = $(this).jqGrid("getGridParam", "userData");
            return userData[value];
        }
    ]
}

这种方式会很快,你只需要在服务器端按照上面的格式准备数据即可。