1

このサンプルでは、​​jqGrid 4.6 を使用しています。

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

ご覧のとおり、集計の数に関係なく、ヘッダー名は正しく表示されます (「A A」、「A B」など)。

ただし、バージョン 4.7 に切り替えると、複数の集計が使用されている場合、ピボットされた列に正しく名前が付けられません。

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

集約が 1 つしか使用されていない場合、ヘッダーは正しく表示されます。

4.7 にはヘッダー名を指定する別の方法がありますか、それともバグですか? 後者の場合、適切な回避策はありますか?

これは yDimension のコードです:

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

コンバーター関数は、ヘッダー名を正しくフォーマットするために使用されます。これは 4.7 では集約を 1 つしか使用しない場合は必要ありませんが、それ以上使用すると壊れます。

「Gurrido」は jqGrid の新しい名前になりました。

4

1 に答える 1

2

問題は、名前に使用するスペースにあります。jqPivot現在、名前のスペースはサポートされていません。たとえば、スペースを(アンダースコア) に置き換えることで問題を解決できます。ここ_で回避策を説明しました。

ちなみに、グリド jqGridは、MIT ライセンスを持つ無料のオープン ソース jqGrid の後継者だけではありません。Gurrido jqGrid を開始した後、最後の無料 jqGrid の他の jqGrid フォークが開発されています。ここに結果を投稿します。おそらく今月中に新しいバージョンを公開する予定です。ここで見つけることができる別のフォーク。自分のリポジトリで行った多くの変更をフォークに適用する人もいますが、自分自身の変更もいくつか行う人もいます。

更新:あなたが説明したラベルの問題は、jqGrid 4.7 のバグです。ちなみに、converter集計値に使用スペースがある場合は、を使用する必要はありません。

jqGridリポジトリにバグ修正を投稿しました。デモ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"
    }
);
于 2015-02-04T19:55:11.847 に答える