2

グループ化されたグリッドがあり、1つの列でグループ化してから、そのような別の列で時間を要約します:

name: "GroupBy",
type: "local",
columnSettings: [
    {
        columnKey: "codeName",
        isGroupBy: true,
    },
    {
        columnKey: "hour",
        isGroupBy: false,
        summaries: [
            {
                summaryFunction: "custom",
                text: "Hours :",
                customSummary: function (valuesList) {
                    var sumOfHours = 0.0;
                    var sumOfMinutes = 0.0;
                    for (i = 0; i < valuesList.length; i++) {
                        var split = valuesList[i].split(':');
                        sumOfHours += parseInt(split[0]);
                        sumOfMinutes += parseInt(split[1]);
                    }

                    sumOfHours += parseInt(sumOfMinutes / 60);
                    var minutesLeft = sumOfMinutes % 60;
                    return sumOfHours + ":" + minutesLeft;
                }
            }
        ]
    }
],
summarySettings: {
    //summaryFormat: "HH:MM" // What should I write here to get proper formatiing?
}

今問題は、私が得るたびに:

  1. 36 時間では、36:00 ではなく 360.00 と表示されます
  2. 165:00 ではなく 1,650.00 と表示される 165 時間
  3. 8 時間 15 分、8:15 の代わりに 815.00 と表示されます
  4. 34 時間 15 分 34:15 ではなく 3,415.00 と表示されます

ドキュメントのどこにもそれを正しく表示する方法が見つかりませんでした。誰でも助けることができますか?

4

1 に答える 1

2

igGridGroupBy 集計関数は常に数値型を返すことが期待されますが、これはあなたのケースではありません。そのため、この動作が見られます。できることは、値をフォーマットするために Ignite UI および GroupBy 機能で使用される $.ig.formatter 関数を (igGrid を初期化する前に) オーバーライドし、ロジックを挿入することです。次に例を示します。

var origFormatter = $.ig.formatter;
$.ig.formatter = function (val, type, format) {
    if (format === "myFormat") {
        return val;
    }
    return origFormatter.apply(arguments);
}
// Initialize igGrid here

次に、summarySettings.summaryFormat = "myFormat" を設定して、ロジックが機能するようにします。

于 2015-09-16T13:07:55.340 に答える