环思产品论坛

标题: XtraReport交叉表隐藏列标题及自定义排序 [打印本页]

作者: wanglj    时间: 2016-5-13 11:28
标题: XtraReport交叉表隐藏列标题及自定义排序
本帖最后由 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.保存预览即可达到预期目标

XtraReport交叉表隐藏列标题及自定义排序.pdf

737.88 KB, 下载次数: 237






欢迎光临 环思产品论坛 (http://bbs.huansi.cn/) Powered by Discuz! X3.2