PivotGridControl使用(二)

本篇描述PivotGridControl控件绑定显示数据,以及一些属性的使用,显示的优化。

一、绑定数据源,显示网格。

下图为一份员工跟进统计表(跟进可以理解为某个人对某事或物的跟进)

行区域RowArea:显示部门以及员工

列区域ColumnArea:显示跟进时间

数据区域DataArea:显示跟进人次

代码:

//声明行区域显示字段
var colDeptName = new PivotGridField
                {
                    Area = PivotArea.RowArea,
                    AreaIndex = 0,
                    FieldName = "DeptName",
                    Caption = "部门",
                    Name = "colDeptName",
                };
var colEmpName = new PivotGridField
                {
                    Area = PivotArea.RowArea,
                    AreaIndex = 1,
                    FieldName = "EmpName",
                    Name = "colEmpName",
                    Caption = "员工"
                };
//声明列区域显示字段
var colDate = new PivotGridField
                {
                    Area = PivotArea.ColumnArea,
                    AreaIndex = 0,
                    FieldName = "Date",
                    Name = "colDate",
                    Caption = "日期",
                    //该属性配合自定义显示字段值的换行显示,这里为显示两行
                    ColumnValueLineCount = 2,
                };
//声明数据区域显示字段
var colEmpID = new PivotGridField
                {
                    Area = PivotArea.DataArea,
                    AreaIndex = 0,
                    FieldName = "EmpID",
                    Name = "colEmpID",
                    Caption = "数量",
                    //这里设置数据区的统计类型为统计数量
                    SummaryType = PivotSummaryType.Count
                };
//给PivotGrid添加绑定显示字段
pivotGridControl.Fields.AddRange(new[] { colDeptName, colEmpName, colDate, colEmpID});
//查询要显示的数据源list或datatable都可以
List<EmployeeDayWeekMonthReport> list = new List<EmployeeDayWeekMonthReport>();
BoardPara para = new BoardPara();
//...查询sql(查询需要汇总,统计的数据)
var obj = JsonConvertHelper.SerializeObject(para, new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd" });
list = GetApi<List<EmployeeDayWeekMonthReport>>("obj=" + obj.Replace("+", "2B%"), "Board/GetWeekReport");
//最终,给绑定数据源
pivotGridControl.DataSource = list;

二、优化显示

1、隐藏网格顶部部分

//获取或设置不显示筛选器标头。
pivotGridControl.OptionsView.ShowFilterHeaders = false;
//获取或设置不显示数据头。
pivotGridControl.OptionsView.ShowDataHeaders = false;
//获取或设置列总计的位置,Far:右侧,Near:左侧
pivotGridControl.OptionsView.ColumnTotalsLocation = PivotTotalsLocation.Far;
//设置不显示列标题
pivotGridControl.OptionsView.ShowColumnHeaders = false;

2、自定义数据区显示值

方法一:(不建议使用)

首先,设置数据区域字段的一个属性,GroupInterval属

//设置当前列或行字段的值是如何组合成组的。
colDate.GroupInterval = PivotGroupInterval.Custom;

其次,使用pivortGridControl的CustomGroupInterval事件

/// <summary>
/// 自定义组间间隔
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gc_CustomGroupInterval(object sender, PivotCustomGroupIntervalEventArgs e)
        {
                    //因为列区域字段绑定的是日期字段,所以e.Value取得的是字段的值,通过自定义值的显示,
                    //PivortGridControl会自动为自定义后的显示值类型的数据进行汇总。
                     e.GroupValue = Convert.ToDateTime(e.Value).Month + "/" +
                     Convert.ToDateTime(e.Value).Day + "\r\n" +
                     Convert.ToDateTime(e.Value).ToString("ddd");
         }
//若想要自定义显示换行还需要设置以下属性
pivotGridControl.Appearance.FieldValue.TextOptions.HAlignment = HorzAlignment.Center;
pivotGridControl.Appearance.FieldValue.TextOptions.WordWrap = WordWrap.Wrap; 

方法二:

在pivotGridControl控件,字段的显示值事件中设置数据区字段的显示

/// <summary>
/// 设置字段的显示值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gc_FieldValueDisplayText(object sender, PivotFieldDisplayTextEventArgs e)
        {
            if (e.ValueType == PivotGridValueType.Value && e.Field.FieldName == "Date")
            {               
                        e.DisplayText = Convert.ToDateTime(e.Value).Month + "/" +
                                       Convert.ToDateTime(e.Value).Day + "\r\n" +
                                       Convert.ToDateTime(e.Value).ToString("ddd");
            }
        }

最终显示样式:

发布了36 篇原创文章 · 获赞 8 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_35351282/article/details/81065071