jqGrid 和 jqPivot 4.7:旋转列的名称不正确

jqGrid and jqPivot 4.7: Incorrect names for pivoted columns

此示例使用 jqGrid 4.6:

http://jsfiddle.net/aUDHx/1218/

可以看出,无论聚合数多少,header 个名称都正确显示("A A"、"A B" 等)

但是,当我切换到版本 4.7 时,当使用多个聚合时,透视列的名称不正确:

http://jsfiddle.net/aUDHx/1219/

如果只使用一个聚合,headers 显示正确。

4.7 是否有不同的方法来指定 header 名称,或者这是一个错误?如果是后者,是否存在适当的解决方法?

这是 y 维度的代码:

yDimension: [{
        dataName: 'product',
        converter: function (val) {return val.replace(/\s/g, ' ');}
    }],

转换器函数用于正确格式化header 名称。如果您只使用一个聚合,则在 4.7 中不需要这样做,但超过这个数会导致它中断。

"Gurrido" 现在是 jqGrid 的新名称。

问题出在您在名称中使用的空格中。 jqPivot 目前不支持名称中的空格。例如,您可以通过 空格替换为 _(下划线)来解决此问题。我描述了解决方法 here.

顺便说一下Gurrido jqGrid is not the only successor of free open source jqGrid with MIT licence. After starting Gurrido jqGrid some other jqGrid forks of the last free jqGrid is developing. I post my results here. I plan to publish new version probably in the current month. Another fork you can find here。一个在 fork 中应用了我在我的存储库中所做的许多更改,但一个也进行了一些他自己的更改。

更新:您描述的标签问题是 jqGrid 4.7 中的错误。顺便说一下,如果聚合值中有使用空间,则不需要使用 converter

我发布了错误修复 here in my jqGrid repository. You can see the results on the demo http://jsfiddle.net/OlegKi/b47ocLd7/

演示使用以下JavaScript代码

var mydata = [
    { id: "1", product: "A A", sold: "8", sold2: "8", sold3: "8", emp: "Michelle" },
    { id: "2", product: "A A", sold: "3", sold2: "8", sold3: "8", emp: "Tania" },
    { id: "6", product: "A B", sold: "1", sold2: "8", sold3: "8", emp: "Mark" },
    { id: "3", product: "A B", sold: "5", sold2: "8", sold3: "8", emp: "Tommy" },
    { id: "4", product: "B B", sold: "2", sold2: "8", sold3: "8", emp: "Dave" },
    { id: "5", product: "B B", sold: "5", sold2: "8", sold3: "8", emp: "Carol" }
];

$("#grid").jqGrid("jqPivot", mydata, {
        xDimension: [
            { isGroupField: false, width: 40, dataName: "id",  label: "ID" },
            { isGroupField: false, width: 80, dataName: "emp", label: "Employee" }
        ],
        yDimension: [
            { dataName: "product" }
        ],
        aggregates: [
            { aggregator: "sum", width: 60, member: "sold",  label: "Sold" },
            { aggregator: "sum", width: 60, member: "sold2", label: "Sold 2" }
        ],
        colTotals: true
    },
    {
        height: "auto",
        pager: "#pager",
        iconSet: "fontAwesome",
        resizeStop: function () {
            $(this).jqGrid("setGridWidth", this.grid.newWidth, false);
        },
        caption: "Daily Sales"
    }
);