? ?在ext 3中自带API中,使用record中的某个或者某些字段组成grouping header是比较方便的。但是,如果希望使用这些record按照某个方法计算出来一个grouping header,好像就没有什么好办法了。
? ?经过一些搜索,找到了一个解决方案,在此mark下。
? ? this.buildHeaderTempalte = function() {
return new Ext.XTemplate(
'<div id="{groupId}" class="x-grid-group {cls}">',
'<div id="{groupId}-hd" class="x-grid-group-hd" style="{style}"><div class="x-grid-group-title">',
' {[this.buildHeaderForGroupingRecords(values)]}',
'</div></div>',
'<div id="{groupId}-bd" class="x-grid-group-body">', {
buildHeaderForGroupingRecords : function(values) {
var suppHelper = com.oocl.ir4.sps.web.js.cache.SupportingDataHelper;
var isOfficeVarious = false;
var isPlanStatusVarious = false;
var legSeq = "";
var legTransmode = "";
var ctrlOffice = "";
var planStatus = "";
var header = "";
if (values && values.rs && values.rs.length
&& values.rs.length > 0) {
for (var i = 0; i < values.rs.length; i++) {
var record = values.rs[i];
if (i === 0) {
legSeq = record.get('legSeq');
if (!Ext
.isEmpty(record.get('legTransMode')))
legTransmode = suppHelper
.getSupportingDataNameById(
com.oocl.ir4.sps.web.cache.support.TransModeStore,
record
.get('legTransMode'));
ctrlOffice = suppHelper
.getSupportingDataNameById(
com.oocl.ir4.sps.web.cache.profile.OfficeStore,
record.get('legCtrlOffice'));
planStatus = suppHelper
.getSupportingDataNameById(
com.oocl.ir4.sps.web.cache.support.OrderPlanStatusStore,
record.get('legPlanStatus'));
}
isOfficeVarious = isOfficeVarious
|| record.get("isCtrlOfficeVarious");
isPlanStatusVarious = isPlanStatusVarious
|| record.get("isPlanStatusVarious");
}
}
if (isOfficeVarious)
ctrlOffice = TpConstants.VARIOUS_VALUE;
if (isPlanStatusVarious)
planStatus = TpConstants.VARIOUS_VALUE;
header = legSeq + "-" + legTransmode + "-" + ctrlOffice
+ "-" + planStatus;
return header;
}
});
};
?使用的时候:
view : new Ext.grid.GroupingView({
forceFit : true,
disableGroupingByClick : true,
startGroup : new TpGroupedHeader()
.buildHeaderTempalte()
}),
?这样子,通过红色字体部分的设定,就可以得到我们想要的header了。