JqGrid - 使用 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];
}
]
}
这种方式会很快,你只需要在服务器端按照上面的格式准备数据即可。
我在使用带有某些选项的 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];
}
]
}
这种方式会很快,你只需要在服务器端按照上面的格式准备数据即可。