2

jqgrid の jqpivot の列ヘッダー グループ機能を利用して、2 つの列ヘッダー (曜日のヘッダーと実際の日付の別のヘッダー) を使用しようとしています。

    var crewAttendance = { "total": 1, "page": 0, "records": 7,
            "rows": [
                { "ID": "1", "UserID": "10", "AttendanceTypeID": "6", "AttendanceDate": "04/05/15", "AttendanceDay": "SUN" },
                { "ID": "21", "UserID": "10", "AttendanceTypeID": "12", "AttendanceDate": "04/06/15", "AttendanceDay": "MON" },
                { "ID": "41", "UserID": "10", "AttendanceTypeID": "19", "AttendanceDate": "04/07/15", "AttendanceDay": "TUE" },
                { "ID": "61", "UserID": "10", "AttendanceTypeID": "17", "AttendanceDate": "04/08/15", "AttendanceDay": "WED" },
                { "ID": "81", "UserID": "10", "AttendanceTypeID": "17", "AttendanceDate": "04/09/15", "AttendanceDay": "THU" },
                { "ID": "101", "UserID": "10", "AttendanceTypeID": "19", "AttendanceDate": "04/10/15", "AttendanceDay": "FRI" },
                { "ID": "121", "UserID": "10", "AttendanceTypeID": "19", "AttendanceDate": "04/11/15", "AttendanceDay": "SAT" }
            ], "userID": ["10"], "firstName": ["Christopher"]
        }
        // create jqPivot Grid
    var grid = $("#pvtCrewAttendance");
    grid.jqGrid("jqPivot",
        crewAttendance.rows,
        {
            xDimension: [
                {
                    isGroupField: false,
                    width: 70,
                    dataName: 'UserID',
                    label: 'UserID'
                }
            ],
            yDimension: [
                {
                    dataName: 'AttendanceDay'
                },
                {
                    dataName: 'AttendanceDate'
                }
            ],
            aggregates: [
                {
                    aggregator: 'max',
                    width: 80,
                    member: 'AttendanceTypeID',
                    summarytype: 'count',
                    sortable: true,
                    resizable: false
                }
            ],
            groupSummary: false,
            colTotals: true
        },
    // grid options
        {
        height: 'auto',
        pager: '#nav',
        caption: 'Crew Attendance'
    });

    var cm = grid.getGridParam('colModel');
    for (var iCol = 0; iCol < cm.length; iCol++) {
        var cmi = cm[iCol];
        if (cmi.label.length == 3 || cmi.label.length == 0 || cmi.label == '\&nbsp\;') {
            grid.jqGrid('hideCol', cmi.name);
        }
    }
    grid.trigger('reloadGrid');

これまでのところ、SUN と MON で機能していますが、何らかの理由で、jqPivot の列ヘッダーのグループ化は、残りの日は適切に機能していません (TUE と WED が結合され、次に THU、FRI、および SAT も結合されますが、そうではないため、それらは異なる日付です)。ここでjsFiddleを参照してください

どうすればそれを残りの日に機能させることができますか?

注: 日付を 90 度回転させるため、2 つのヘッダーを結合することはできません。私はすでにこの部分を行っていますが、混乱を減らすためにフィドルでそれを削除しました。

4

1 に答える 1

1

バグ報告ありがとうございます!

長いデバッグの後、バグを見つけて修正しました。デモでは、GitHub の最新のソースを直接使用しています。したがって、最後の変更がデモにも適用されます。正しい結果が表示されるようになったことを確認できます。

更新:コミットとjsPivot モジュールのこの修正にさらに修正を実装しました。jqGrid 4.7 に由来する古いバグを修正する必要があります。これで、JSFiddle デモhttps://jsfiddle.net/OlegKi/4en1b68c/7/で正しい結果が得られます (デモで表面的な変更を加えました)。より複雑な入力データに対してもコードが正しく機能することを願っています。さらに、 を持つ列を非表示にして最後のブロックを削除できますcmi.label.length == 3 || cmi.label.length == 0 || cmi.label == '\&nbsp\;'。列の存在をもう 1 つのバグとして解釈し、列がグリッドにこれ以上存在しないようにコードを修正しました。

于 2015-05-13T21:41:52.857 に答える