jqGrid和jqPivot 4.7:透视列的名称不正确

时间:2015-02-04 18:08:46

标签: jqgrid jqpivot

此示例使用jqGrid 4.6:

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

可以看出,无论聚合数量多少,标题名称都会正确显示(“A A”,“A B”等)

但是,当我切换到4.7版时,如果使用多个聚合,则无法正确命名透视列:

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

如果只使用一个聚合,则标题会正确显示。

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

这是yDimension的代码:

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

转换器功能用于正确格式化标题名称。如果你只使用一个聚合,这在4.7中是不需要的,但是除此之外的任何东西都会导致它破坏。

“Gurrido”现在是jqGrid的新名称。

1 个答案:

答案 0 :(得分:2)

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

顺便说一下,Gurrido jqGrid并不是免费开源jqGrid与MIT许可证的唯一继承者。在启动Gurrido jqGrid之后,最后一个免费jqGrid的其他一些jqGrid分叉正在开发中。我发布了结果here。我计划在本月发布新版本。您可以找到另一个分叉here。一个在fork中应用了我在我的存储库中做出的许多更改,但是其中一个也做了一些他自己的更改。

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

我在here中发布了错误修复my jqGrid repository。您可以在演示http://jsfiddle.net/OlegKi/b47ocLd7/

上查看结果

enter image description here

该演示使用以下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"
    }
);