C1 FlexGrid for WinForms挖掘数据隐藏下的趋势

时间:2024-11-14 10:44:20

1、FlexGrid自定义过滤器FlexGrid可以创建自定义过滤器来处理专门的值。例如,自定义过滤器在过滤颜色、地理或自定义数据类型方面值得推荐。要创建一个自定义的过滤器,开发人员必须创建两个类:•过滤器:这个类必须实现IC1ColumnFilter接口,它可以指定过滤器应用到一个特定的值,对过滤器进行复位,并返回一个用于查看和编辑过滤器的参数的编辑器。•过滤编辑器:这个类必须继承自Control,必须实现IC1ColumnFilterEditor的接口,该接口可以指定用于初始化编辑器和更改应用到过滤器的方法。自定义过滤器的样本包含三个自定义过滤器,用于过滤类型的颜色,日期/时间和字符串的值。本篇博客的Demo中分别自定义了过滤器过滤颜色,日期和字符串。具体代码如Demo的CustomFilter文件夹所示。 颜色过滤器:日期过滤器:字符串过滤器:

C1 FlexGrid for WinForms挖掘数据隐藏下的趋势C1 FlexGrid for WinForms挖掘数据隐藏下的趋势C1 FlexGrid for WinForms挖掘数据隐藏下的趋势

2、初始化数据源以及设置FlexGrid过滤器首先设置DataTable数据源,共有五列数据。其鸱远忡绑次通过FlexGrid的DataSour艘早祓胂ce绑定数据源。再次通过OwnerDrawCell事件重画Cell。最后给FlexGrid的Column的Filter设置上述自定义的过滤器。具体代码如下: public CustomFiltering() { InitializeComponent(); //// add demo properties //AddProperty("AllowFiltering", _flex); // create data table var dt = new DataTable(); dt.Columns.Add("字符串", typeof(String)); dt.Columns.Add("日期", typeof(DateTime)); dt.Columns.Add("整型", typeof(int)); dt.Columns.Add("颜色名", typeof(KnownColor)); dt.Columns.Add("颜色", typeof(Color)); String[] names = { "Rob Walters", "Janice Galvin", "Garrett Vargas", "David Campbell", "Lynn Tsoflias", "Linda Mitchell", "Jillian Carson", "Alan Brewer", "William Vong" }; var rnd = new Random(); foreach (KnownColor kc in Enum.GetValues(typeof(KnownColor))) { Color clr = Color.FromKnownColor(kc); dt.Rows.Add(names[rnd.Next(0, 8)], DateTime.Today.AddDays(-rnd.Next(0, 100)), rnd.Next(0, 1000), kc, clr); } // configure grid _flex.DataSource = dt; _flex.DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw; _flex.OwnerDrawCell += _flex_OwnerDrawCell; _flex.AllowEditing = false; _flex.AllowFiltering = true; // assign custom filters _flex.Cols["颜色"].Filter = new ColorFilter(); _flex.Cols["日期"].Filter = new DateFilter(); _flex.Cols["颜色名"].Filter = new StringFilter(); }

3、重画FlexGrid的Cell调用FlexGrid的OwnerDrawCell事件重画Cell,具体如代码所示:void _flex_晦倘佳鳎OwnerDrawCell(object sender, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e) { if (_flex[e.Row, e.Col] is Color) { var clr = (Color)_flex[e.Row, e.Col]; if (clr != null) { e.DrawCell(C1.Win.C1FlexGrid.DrawCellFlags.Background | C1.Win.C1FlexGrid.DrawCellFlags.Border); var rc = e.Bounds; rc.Inflate(-4, -2); using (var br = new SolidBrush(clr)) { e.Graphics.FillRectangle(br, rc); e.Graphics.DrawRectangle(Pens.Black, rc); } } } }

4、演示FlexGrid的过滤、排序和分组根据上述代码,FlexGrid通过过滤,配合排序、分组和汇总等功能更清晰的呈现出各种KPI数据。如图所示:

C1 FlexGrid for WinForms挖掘数据隐藏下的趋势

5、FlexGrid打印FlexGrid不仅仅是个表格控件,它还能为用户提供报表能力。通过打印功能,将数据分析结果生成打印。这是时候,只需调用FlexGrid.PrintGrid功能即可轻松实现打印。代码示例: this._flex.PrintGrid("CustomFilter", C1.Win.C1FlexGrid.PrintGridFlags.ShowPreviewDialog);打印预览效果如图所示:

C1 FlexGrid for WinForms挖掘数据隐藏下的趋势
© 2025 手抄报圈
信息来自网络 所有数据仅供参考
有疑问请联系站长 site.kefu@gmail.com