展开和折叠时子网格与网格一起分组
grouping of subgrid along with grid when expanded and colasped
我有一个 jqgrid,其中我对第一列和第二列进行了分组,这样如果 n 行对该列具有相同的值,那么它将合并(对第一行使用 rowspan,对具有相同值的其他行使用 display:none价值)。
我还有一个子网格 there.now 当我展开网格中的任何行时,分组中的其他行向左移动。
这是我的分组函数:
attrSetting: function(rowId, val, rawObject, cm) {
var attr = rawObject.attr[cm.name],result;
if (attr.rowspan) {
result = ' rowspan=' + '"' + attr.rowspan + '"';
} else if (attr.display) {
result = ' style="display:' + attr.display + '"';
}
return result;
}
我已经写了一些代码来处理这个问题,每次扩展子网格时 rowspan 增加 1,每次折叠子网格时也减少 1,如下所示:
var rowspanValue = this.getElements("tbody>tr.ui-widget-content")[row_id - 1].getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_Stream]").rowSpan;
this.getElements("tbody>tr.ui-widget-content")[row_id - 1].getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_Stream]").setAttributes({ rowspan: rowspanValue + 1 });
this.getElements("tbody>tr.ui-widget-content")[row_id - 1].getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_\%CompletionAvg]").setAttributes({ rowspan: rowspanValue + 1 });
this.getElements("tbody>tr.ui-widget-content")[row_id - 1].getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_\%WeightAvg]").setAttributes({ rowspan: rowspanValue + 1 });
但这不起作用,因为只有分组的第一行有 rowspan,所以如果我展开每个分组的第一行,那么它工作正常,对于其他人,问题仍然存在。
有什么方法可以检测DOM中具有相同分组的所有行并每次设置第一行的行跨度,或者任何其他方法来实现它。
请多多指教。
我在格式化程序中为我想要分组的列设置了一个自定义属性,这就是我修改代码的方式:
cellattr: function(rowId, val, rawObject, cm) {
return pathProjectModel.attrSetting(rowId, val, rawObject, cm) + 'attr-stream =' + val;
}
subGridRowExpanded: function(subgrid_id, row_id) {
var subgrid_table_id, rowspanValue;
// grouping of subgrid along with grid
var streamName = $('#idCommonGridTabledetailMainContainerPATHApp').jqGrid('getCell', row_id, 'Stream');
var streamGroup = widget.getElements('[attr-stream = "' + streamName + '"]');
rowspanValue = streamGroup[0].rowSpan;
for (var i = 0; i < streamGroup.length; i++) {
streamGroup[i].setAttributes({ rowspan: rowspanValue + 1 });
streamGroup[i].getClosest("tr.ui-widget-content").getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_\%CompletionAvg]").setAttributes({ rowspan: rowspanValue + 1 });
streamGroup[i].getClosest("tr.ui-widget-content").getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_\%WeightAvg]").setAttributes({ rowspan: rowspanValue + 1 });
}
}
subGridRowColapsed: function(subgrid_id, row_id) {
var rowspanValue;
var streamName = $('#idCommonGridTabledetailMainContainerPATHApp').jqGrid('getCell', row_id, 'Stream');
var streamGroup = widget.getElements('[attr-stream = "' + streamName + '"]');
rowspanValue = streamGroup[0].rowSpan;
for (var i = 0; i < streamGroup.length; i++) {
streamGroup[i].setAttributes({ rowspan: rowspanValue - 1 });
streamGroup[i].getClosest("tr.ui-widget-content").getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_\%CompletionAvg]").setAttributes({ rowspan: rowspanValue - 1 });
streamGroup[i].getClosest("tr.ui-widget-content").getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_\%WeightAvg]").setAttributes({ rowspan: rowspanValue - 1 });
}
}
我有一个 jqgrid,其中我对第一列和第二列进行了分组,这样如果 n 行对该列具有相同的值,那么它将合并(对第一行使用 rowspan,对具有相同值的其他行使用 display:none价值)。
我还有一个子网格 there.now 当我展开网格中的任何行时,分组中的其他行向左移动。
这是我的分组函数:
attrSetting: function(rowId, val, rawObject, cm) {
var attr = rawObject.attr[cm.name],result;
if (attr.rowspan) {
result = ' rowspan=' + '"' + attr.rowspan + '"';
} else if (attr.display) {
result = ' style="display:' + attr.display + '"';
}
return result;
}
我已经写了一些代码来处理这个问题,每次扩展子网格时 rowspan 增加 1,每次折叠子网格时也减少 1,如下所示:
var rowspanValue = this.getElements("tbody>tr.ui-widget-content")[row_id - 1].getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_Stream]").rowSpan;
this.getElements("tbody>tr.ui-widget-content")[row_id - 1].getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_Stream]").setAttributes({ rowspan: rowspanValue + 1 });
this.getElements("tbody>tr.ui-widget-content")[row_id - 1].getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_\%CompletionAvg]").setAttributes({ rowspan: rowspanValue + 1 });
this.getElements("tbody>tr.ui-widget-content")[row_id - 1].getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_\%WeightAvg]").setAttributes({ rowspan: rowspanValue + 1 });
但这不起作用,因为只有分组的第一行有 rowspan,所以如果我展开每个分组的第一行,那么它工作正常,对于其他人,问题仍然存在。
有什么方法可以检测DOM中具有相同分组的所有行并每次设置第一行的行跨度,或者任何其他方法来实现它。
请多多指教。
我在格式化程序中为我想要分组的列设置了一个自定义属性,这就是我修改代码的方式:
cellattr: function(rowId, val, rawObject, cm) {
return pathProjectModel.attrSetting(rowId, val, rawObject, cm) + 'attr-stream =' + val;
}
subGridRowExpanded: function(subgrid_id, row_id) {
var subgrid_table_id, rowspanValue;
// grouping of subgrid along with grid
var streamName = $('#idCommonGridTabledetailMainContainerPATHApp').jqGrid('getCell', row_id, 'Stream');
var streamGroup = widget.getElements('[attr-stream = "' + streamName + '"]');
rowspanValue = streamGroup[0].rowSpan;
for (var i = 0; i < streamGroup.length; i++) {
streamGroup[i].setAttributes({ rowspan: rowspanValue + 1 });
streamGroup[i].getClosest("tr.ui-widget-content").getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_\%CompletionAvg]").setAttributes({ rowspan: rowspanValue + 1 });
streamGroup[i].getClosest("tr.ui-widget-content").getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_\%WeightAvg]").setAttributes({ rowspan: rowspanValue + 1 });
}
}
subGridRowColapsed: function(subgrid_id, row_id) {
var rowspanValue;
var streamName = $('#idCommonGridTabledetailMainContainerPATHApp').jqGrid('getCell', row_id, 'Stream');
var streamGroup = widget.getElements('[attr-stream = "' + streamName + '"]');
rowspanValue = streamGroup[0].rowSpan;
for (var i = 0; i < streamGroup.length; i++) {
streamGroup[i].setAttributes({ rowspan: rowspanValue - 1 });
streamGroup[i].getClosest("tr.ui-widget-content").getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_\%CompletionAvg]").setAttributes({ rowspan: rowspanValue - 1 });
streamGroup[i].getClosest("tr.ui-widget-content").getElement("[aria-describedby=idCommonGridTabledetailMainContainerPATHApp_\%WeightAvg]").setAttributes({ rowspan: rowspanValue - 1 });
}
}