jqPivot 正在对不属于该组的列 headers 进行分组
jqPivot is grouping column headers that do not belong to the group
我正在尝试利用 jqgrid 的 jqpivot 的列 header 组功能有两列 headers(一个 header 表示星期几,另一个 header实际日期)。
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 == '\ \;') {
grid.jqGrid('hideCol', cmi.name);
}
}
grid.trigger('reloadGrid');
到目前为止,它适用于 SUN 和 MON,但由于某种原因,jqPivot 的列 header 分组在剩下的日子里无法正常工作(TUE 和 WED 合并,然后是 THU,FRI,和 SAT 也会合并,但它们不应该合并,因为它们的日期不同)。参见 jsFiddle here
我怎样才能让它在接下来的日子里正常工作?
注意:我无法将两个 header 组合在一起,因为我要将日期旋转 90 度。我已经完成了这部分,但在 fiddle 中将其删除以减少混乱。
感谢您的错误报告!
经过长时间的调试,我发现并修复了这个错误。您的演示直接使用来自 GitHub 的最新资源。所以 the last changes 也适用于演示。您可以验证它现在显示的结果是否正确。
已更新:我实施了更多修复 in the commit and in this one for jsPivot module. There should fix the old bugs, which come from jqGrid 4.7. Now your JSFiddle demo https://jsfiddle.net/OlegKi/4en1b68c/7/ 产生了正确的结果(我在演示中做了一些外观上的更改)。我希望该代码也适用于更复杂的输入数据。此外,您可以删除最后一个块并隐藏具有 cmi.label.length == 3 || cmi.label.length == 0 || cmi.label == '\ \;'
的列。我将列的存在解释为另一个错误,因此我修改了代码,以便网格中不再存在列。
我正在尝试利用 jqgrid 的 jqpivot 的列 header 组功能有两列 headers(一个 header 表示星期几,另一个 header实际日期)。
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 == '\ \;') {
grid.jqGrid('hideCol', cmi.name);
}
}
grid.trigger('reloadGrid');
到目前为止,它适用于 SUN 和 MON,但由于某种原因,jqPivot 的列 header 分组在剩下的日子里无法正常工作(TUE 和 WED 合并,然后是 THU,FRI,和 SAT 也会合并,但它们不应该合并,因为它们的日期不同)。参见 jsFiddle here
我怎样才能让它在接下来的日子里正常工作?
注意:我无法将两个 header 组合在一起,因为我要将日期旋转 90 度。我已经完成了这部分,但在 fiddle 中将其删除以减少混乱。
感谢您的错误报告!
经过长时间的调试,我发现并修复了这个错误。您的演示直接使用来自 GitHub 的最新资源。所以 the last changes 也适用于演示。您可以验证它现在显示的结果是否正确。
已更新:我实施了更多修复 in the commit and in this one for jsPivot module. There should fix the old bugs, which come from jqGrid 4.7. Now your JSFiddle demo https://jsfiddle.net/OlegKi/4en1b68c/7/ 产生了正确的结果(我在演示中做了一些外观上的更改)。我希望该代码也适用于更复杂的输入数据。此外,您可以删除最后一个块并隐藏具有 cmi.label.length == 3 || cmi.label.length == 0 || cmi.label == '\ \;'
的列。我将列的存在解释为另一个错误,因此我修改了代码,以便网格中不再存在列。