gpt4 book ai didi

jquery - 在 JQGrid 中,除了列格式化程序之外,是否可以在分组摘要单元格上使用不同的格式化程序?

转载 作者:行者123 更新时间:2023-12-03 22:21:22 25 4
gpt4 key购买 nike

是否可以对数据行和摘要行使用不同的格式化程序?例如,我想将摘要信息(summaryType = count)添加到复选框格式的列,摘要值显示为选中的复选框。有什么想法吗?

种类,阿尔珀

您可以看到here的截图:

enter image description here

最佳答案

我发现你的问题很有趣,因为我没有立即知道答案。现在我抽出时间重新阅读了jqGrid分组模块的源代码并创建了一个您需要的示例。

首先我准备了the demo显示以下结果:

enter image description here

如何查看摘要行包含许多以不同方式格式化的元素:

enter image description here

要在每个分组 block 的末尾添加摘要行,我们需要在 jqGrid 的 groupingView 参数中定义 groupSummary: [true] 属性。然后我们需要定义summaryType colModel 中汇总行不包含空单元格的所有列的属性。

例如,在最简单的情况下,我为列'amount'定义了属性summaryType: 'sum'

对于'tax'列,我另外定义了summaryTpl:

summaryTpl: '<i>{0}</i>', summaryType: 'sum'

因此,'tax' 列的摘要包含斜体文本。

对于'total'列,我根据显示的值使用了不同的颜色。值大于 1000 的结果显示为绿色。其他值以红色显示。该实现是摘要行的真正自定义格式化程序:

//formatter: 'number',
formatter: function (cellval, opts, rwdat, act) {
if (opts.rowId === "") {
if (cellval > 1000) {
return '<span style="color:green">' +
$.fn.fmatter('number', cellval, opts, rwdat, act) +
'</span>';
} else {
return '<span style="color:red">' +
$.fn.fmatter('number', cellval, opts, rwdat, act) +
'</span>';
}
} else {
return $.fn.fmatter('number', cellval, opts, rwdat, act);
}
},
summaryType: 'sum'

我使用了自定义格式化程序,而不是formatter: 'number'。我不想再次实现 formatter: 'number' ,因此我根据 $.fn.fmatter('number', cellval 调用了预定义的 'number' 格式化程序、opts、rwdat、act)

上面代码中最重要的部分是这一行

if (opts.rowId === "") {

在格式化网格单元期间,将调用自定义格式化程序,并将 opts.rowId 初始化为行 ID。仅在格式化摘要行时,opts.rowId 将为空字符串 ("")。我利用这一事实来实现自定义格式。

“已关闭”栏中,我展示了另一个技巧。我使用定义为函数的 summaryType 。人们可以使用它来进行一些自定义汇总计算,另一种作为标准类型:“sum”、“min”、“max”、“count”和“avg”。在演示中,我显示所有复选框的“计数”和选定复选框的“计数”,并在摘要中显示结果。此外,摘要单元格还具有附加复选框,如果组中至少有一个复选框被选中,则该复选框也会被选中。包含自定义格式化程序的相应代码如下:

formatter: function (cellval, opts, rwdat, act) {
if (opts.rowId === "") {
return '<span style="display:inline-block;top:-2px;position:relative;">' +
cellval.checkedCount + ' of ' + cellval.totalCount + '</span>&nbsp;' +
$.fn.fmatter('checkbox', cellval.max, opts, rwdat, act);
} else {
return $.fn.fmatter('checkbox', cellval, opts, rwdat, act);
}
},
summaryType: function (val, name, record) {
if (typeof (val) === "string") {
val = {max: false, totalCount: 0, checkedCount: 0};
}
val.totalCount += 1;
if (record[name]) {
val.checkedCount += 1;
val.max = true;
}
return val;
}

我们需要保存我们计算的树不同值:totalCountcheckedCountmax。上面的代码显示,我们可以将初始字符串 val 参数更改为保存我们需要的所有信息的对象。在格式化摘要行期间,将调用自定义格式化程序,并将 cellval 初始化为我们之前创建的 val 对象。这样我们就可以保存任何自定义信息然后显示它。

我希望通过演示您能够创建所需的任何汇总分组行。

关于jquery - 在 JQGrid 中,除了列格式化程序之外,是否可以在分组摘要单元格上使用不同的格式化程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7600071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com