本帖最后由 wutingting 于 2017-3-9 18:39 编辑
1.隐藏列标题
用DevExpress PivotGrid report 做报表的时候,将字段拖放到报表中后,ColumnArea(列区域)和DataArea(数据域)会显示两个标题字段,如下图:
选中交叉表,设置以下属性可以隐藏:
效果如下: 2.自定义排序
做报表的时候,设定ColumnArea(列区域)的FiledName(自定义属性)为sSize,最终呈现的报表是依据sSize排序。而期望的是按照iSizeGroupId,iSizeOrder排序,但iSizeGroupId,iSizeOrder由于不用在报表中呈现,故未将其拖放在报表中.
如何使ColumnArea(列区域)依据iSizeGroupId,iSizeOrder来排序呢? 使用xrPivotGrid1_CustomFieldSort 事件可以解决这个问题。
具体处理如下:
1.设置sSize的SortMode(排序模式)为Custom(自定义)。否则xrPivotGrid1_CustomFieldSort 事件不会触发。
2.处理xrPivotGrid1_CustomFieldSort 事件。 private voidpivotGrid1_CustomFieldSort(object sender,HuanSi.XtraReports.UI.PivotGrid.PivotGridCustomFieldSortEventArgs e) { //当列为sSize时,才处理自定义排序 if(e.Field.FieldName == "sSize") { if (e.Value1== null || e.Value2 == null) return; e.Handled =true;
//取iSizeGroupId string sg1 =e.GetListSourceColumnValue(e.ListSourceRowIndex1,"iSizeGroupId").ToString(); string sg2 =e.GetListSourceColumnValue(e.ListSourceRowIndex2,"iSizeGroupId").ToString();
//取iSizeOrder string s1 =e.GetListSourceColumnValue(e.ListSourceRowIndex1,"iSizeOrder").ToString(); string s2 =e.GetListSourceColumnValue(e.ListSourceRowIndex2,"iSizeOrder").ToString();
//比较iSizeGroupId if(string.Compare(sg1, sg2) > 0) { e.Result =1; } else if (string.Compare(sg1, sg2) == 0) //iSizeGroupId相等时,再比较iSizeOrder { e.Result =string.Compare(s1, s2); } else { e.Result =-1; } } }
3.保存预览即可达到预期目标 |