zoukankan      html  css  js  c++  java
  • XtraReport交叉表隐藏列标题及自定义排序

    1.隐藏列标题

    用DevExpress PivotGrid report 做报表的时候,将字段拖放到报表中后,ColumnArea和DataArea会显示两个标题字段,如下图:

    clip_image001

    选中交叉表,设置以下属性可以隐藏:

    clip_image002

    效果如下:

    clip_image003

    2.自定义排序

    做报表的时候,设定ColumnArea的FiledName为sSize,最终呈现的报表是依据sSize排序。而期望的是按照iSizeGroupId,iSizeOrder排序,但iSizeGroupId,iSizeOrder由于不用在报表中呈现,故未将其拖放在报表中.

    如何使ColumnArea依据iSizeGroupId,iSizeOrder来排序呢? 使用xrPivotGrid1_CustomFieldSort 事件可以解决这个问题。

    具体处理如下:

    1.设置sSize的SortMode为Custom。否则xrPivotGrid1_CustomFieldSort 事件不会触发。

    clip_image004

    clip_image005

    2.处理xrPivotGrid1_CustomFieldSort 事件。

    注:此处的排序字段也可以在SQL中提前处理好,在SQL中将两个字段合并一个排序字段。

    private void pivotGrid1_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.保存预览即可达到预期目标

    clip_image006

  • 相关阅读:
    模块和包
    网络基础之网络协议
    计算机硬件知识
    面试题集锦(一)
    二分查找法
    ORM多表操作示例
    Django之URL(路由系统)用法
    用Nginx实现微信小程序本地SSL请求
    [PHP7.0-PHP7.2]的新特性和新变更
    利用Node的chokidar 监听文件改变的文件。
  • 原文地址:https://www.cnblogs.com/wanglj2007/p/5503063.html
Copyright © 2011-2022 走看看