UltraChart绑定数据的问题(翻译)

 原文来源:Using Data Binding with the UltraChart,有删节补充。

     一般的UltarChart控件支持良种数据绑定的方法。第一种方法是传统的.NET数据绑定,其通过DataSource属性设置控件的数据源,然后调用DataBind()以绑定数据,这也是本文介绍的重点;第二种方法是借助Series对象给控件提供数据。

一、不同图表构成上的数据差异

UltraChart控件包含各种图形展示,比如列状图(Column Chart) 、扇形图(Scatter chart)、线状图(Line Chart) 等,各常见图对图形展示的数据要求不尽相同,具体参见表1

图表类型

数据要求

Column Chart

at least one numeric column

Bar Chart

at least one numeric column

Candlestick Chart

four numeric columns for data points

Pie Chart

one numeric column

Point Chart

at least one numeric column

Bubble Chart

three numeric columns for 2D rendering and four numeric columns for 3D rendering

Spline Chart

at least one numeric column

Cylinder Bar Chart

at least one numeric column

Scatter Chart

two numeric columns for 2D rendering and three numeric columns for 3D rendering

表一 常见图数据展示时的最低数据要求

表一表明,如果您要生成列图,其绑定的DataTable中至少要有一列存储的是数值信息(int数据、double数据等),而且尽管没做要求,DataTable中要包含一个储存String信息的列。下列代码符合列图展示的数据要求(实际含义:某星期出售ActiveX控件的量)

        DataTable dt = new DataTable();

        dt.Columns.Add("Week", typeof(System.String));

        dt.Columns.Add("ActiveX", typeof(System.Int32));

        dt.Rows.Add(new object[] {"Week 1", 50});

上述单纯的展示某一列的数据没什么意义,要使得图表展示得有意义,需要多列数据的参与,比如我们想看下某星期出售某些产品的情况,我们只需要相应添加几个数值列,参见下列代码

        DataTable dt = new DataTable();

        dt.Columns.Add("Week", typeof(System.String));

        dt.Columns.Add("ActiveX", typeof(System.Int32));

        dt.Columns.Add("Java", typeof(System.Int32));

        dt.Columns.Add("NET", typeof(System.Int32));

        dt.Rows.Add(new object[] {"Week 1", 50, 15, 79});

   上述代码的实现效果参见图1

1   某星期出售控件的情况

二、系列数据的添加

目前所代码展现的列图,局限于二维层面:每种产品的销售情况。如果我们想看三个星期来此类产品的销售情况,又该怎么处理呢?这意味着我们要增加个视角:星期。此种情况下我们得到数据的三维层面,这通常称为Series,添加多行这样的Series数据即为系列数据。沿用上述代码场景,我们添加了系列数据以给我们增加新的视角。

   DataTable dt = new DataTable();

   dt.Columns.Add("Week", typeof(System.String));

   dt.Columns.Add("ActiveX", typeof(System.Int32));

   dt.Columns.Add("Java", typeof(System.Int32));

   dt.Columns.Add("NET", typeof(System.Int32));

   dt.Rows.Add(new object[] {"Week 1", 50, 15, 79});

   dt.Rows.Add(new object[] {"Week 2", 45, 17, 72});

   dt.Rows.Add(new object[] {"Week 3", 57, 12, 83});

   dt.Rows.Add(new object[] {"Week 4", 55, 14, 85});

   dt.Rows.Add(new object[] {"Week 5", 31, 19, 70});

绑定上述DataTable后的列图效果参见图2

2   5星期以来出售控件的情况

2X轴线下的标签“Week {n}“用以区别彼此,其由表DataTable中第一个字符列名”Week”的值生成。

 

三、关键属性设置

上述数据展示满足一般的需求,但要得到些特殊的数据展示要求,沿用上述的代码场景,如果要查看某些产品五星期的销售情况,比如我们不需要查看控件ActiveX的销售情况等等,我们的这些要求,大体上我们可以重新定义DataTable,得到恰当的表结构或者得到我们所需要的数据予以绑定。实际上,我们大可不必这么大费周章,UltraChart提供了些属性或方法,通过设置,可以很方便的达成目的,具体包括SwapRowsAndColumns属性,UseRowLabelsColumn属性和IncludeColumns方法。

1SwapRowsAndColumns属性

SwapRowsAndColumns属性是个Boolean属性,如字面所包含意义那样,其通告图表将列字段作为行字段用。图三中左图显示的每星期产品的销售情况,右图显示的是每产品的周销售情况。

3   SwapRowAndColumns属性设置

为了得到新图效果,你仅仅只需设置SwapRowsandColumns属性为true: this.ultraChart1.Data.SwapRowsAndColumns=true;做上述设置后,DataTable表数据效果参见图4

4   SwapRowAndColumnstrue后的DataTable效果图

2IncludeColumns方法

对具体DataTable表来说,UltraChart控件的IncludeColumns方法允许你设置哪些列不需要显示,你只需要知道这些列的index号。沿用上述的代码场景,只是我们增加一个列“Totals”,其统计每月售出产品的总数,当然其是数值列,变更后的代码片段如下:

   DataTable dt = new DataTable();

   dt.Columns.Add("Week", typeof(System.String));

   dt.Columns.Add("ActiveX", typeof(System.Int32));

   dt.Columns.Add("Java", typeof(System.Int32));

   dt.Columns.Add("NET", typeof(System.Int32));

   dt.Columns.Add("Totals", typeof(System.Int32));

   dt.Rows.Add(new object[] {"Week1", 50, 15, 79, 144});

   dt.Rows.Add(new object[] {"Week2", 45, 17, 72, 134});

   dt.Rows.Add(new object[] {"Week3", 57, 12, 83, 152});

   dt.Rows.Add(new object[] {"Week4", 55, 14, 85, 154});

   dt.Rows.Add(new object[] {"Week5", 31, 19, 70, 120});

然后我们添加如下代码:this.ultraChart1.Data.IncludeColumn(4,false);其添加前后的列图展示效果参见图5。图5左是Totals列存在的情况,图5右是Totals列不包括其内的情况:

                                         5  IncludeColumns方法使用前后效果图

3UseRowLabelsColumn RowLabelsColumn属性

UseRowLabelsColumn RowLabelsColumn属性适用于以下场景:要绑定到UltraChart的数据本身有两个或更多的列,其都是String类型,都适合做系列数据的标签,你会选择哪一个来做系列数据的标签呢?默认情况下,UltraChart会选择DataTable表中序号在前的String类型列作为系列数据标签,这会满足你的真实要求么?碰到这样的情况, UseRowLabelsColumn属性会告诉图表你想自己来定义哪列值作为系列数据的标签列, the RowLabelsColumn属性则会来具体设置这个列值。仍然沿用上述场景,代码做如下变更:

   DataTable dt = new DataTable();

   dt.Columns.Add("Notes",typeof(System.String));

   dt.Columns.Add("ActiveX", typeof(System.Int32));

   dt.Columns.Add("Java", typeof(System.Int32));

   dt.Columns.Add("NET", typeof(System.Int32));

   dt.Columns.Add("Week", typeof(System.String));

   dt.Rows.Add(new object[] {"Convention in town.  Strong sales", 50, 15, 79, "Week1"});

   dt.Rows.Add(new object[] {"", 45, 17, 72, "Week2"});

   dt.Rows.Add(new object[] {"", 57, 12, 83, "Week3"});

   dt.Rows.Add(new object[] {"", 55, 14, 85, "Week4"});

   dt.Rows.Add(new object[] {"Holiday Week, slow sales", 31, 19, 70, "Week5"});

 

然后我们添加如下代码:  this.ultraChart1.Data.UseRowLabelsColumn=true;  this.ultraChart1.Data.RowLabelsColumn=4;

其添加前后的列图展示效果参见图6。图6左是默认数据绑定效果,图6右是设置属性UseRowLabelsColumn RowLabelsColumn后的效果

6  UseRowLabelsColumn RowLabelsColumn设置前后效果图

四、总结

用传统的.NET数据绑定方法处理UltraChart数据绑定,显得简单,效果明显!你只需要记住各UltraChart控件的特定数据源要求,此外了解并熟悉其关键属性、方法:SwapRowsAndColumns属性,UseRowLabelsColumn属性和IncludeColumns方法。此外,碰到任何问题,欢迎访问论坛http://forums.infragistics.com/ 

摘要 UltraWinChart与ASP.NET 中UltraWebChart 一样,提供了丰富的对象模块,可视化的显示大量以及各种分类信息,为Windows Forms应用程序带来前所未有的方便。UltraWinChart内置了大量的图形备选项,包含了设计时各种选项,以及内置的美学增强功能。使得图表数据具有前所未有的心动、精美和专业。 组件列表 技术特性 应用场景 适用于.NET环境下图表显示应用程序 运用优势 2D/3D图表类型 — ;;; ;;; ;;; ;;; 包含了所有主要的图表类型:Bar, Column, Line, Area, Pie, Scatter, Bubble, HeatMap, Candle, HiLow, and OpenClose Financial等等。 智能化显示功能 — ;;; ;;; ;;; ;;; UltraWinChart独有的IntelliRend™;;;技术,大大提高了使用效率和可用性。我们将每一种便利,直观的设计理念,高级开发人员控件都融入于UltraWinChart之中。 数据绑定和非绑定模式 — ;;; ;;; ;;; ;;; 使用DataSource属性,可从数据库或数组中读取图表。内部的过滤让可提供的数据模式于所需绘制的图表选择类型相匹配。更可让开发者在图表绘制中调整行和列的包含/非包含的情况。 强大的美学增强— 图表不仅仅采用点阵表示,最重要的是数据的外观显示。为了轻松的显示您的图表,UltraWinChart提供了内置的增强功能: 1) 边缘圆滑过渡-边缘圆滑过渡的显示图表图像,生成高级数据显示,并自动圆滑边缘和颜色转换。 2)alpha混合和透明 — UltraWinChart提供了完整的alpha混合和透明控件,而且可以全球设置。 3)背景图象 —可以在图表的背景中显示一些公司的数据信息,例如公司的logo标志和“机密”的水印记号。 4)增强的颜色模式 —可避免显示多余的点或杂乱的图表项。 5)创新的分层设计 — UltraWinChart提供了分层设计,并可自动混合这些分层,以达到最佳的视觉效果。 6)图标符号 —UltraWinChart可生成大量的图标集,完全控制图标的外观。 标签 - 高级工具使用提示帮助—可完全定制工具提示,提供了优雅的停靠并显示了对细节的注重。 设计时超级方便 —能够真正帮助开发者实现RAD(实时应用程序开发)。UltraWinChart 提供了高级的用户界面属性编辑器,所见即所得的图表设置,加上与所选图表相关联的上下文属性以及设计时绑定到一个DataSet。 支持Windows事件 —提供了丰富的无缝集成的事件集,监测用户与图表数据的交互。 数据高亮显示—当鼠标移动,移上或点击时,图表项中的数据将会自动高亮显示,提供给应用程序的用户丰富强大的交互功能。 强调细节—UltraWinChart 加强了细节部分,其中包括RAD设计时配置、自动数据缩放和数据高亮显示、高级工具使用提示帮助、完全可自定义的图标符号、标签、打印等等。 开发环境 ";;;Microsoft Visual Studio .NET Microsoft Visual Basic .NET";;; ";;;Microsoft Visual C++ .NET Microsoft Visual C# .NET";;; .NET Common Language Runtime V1.0 支持平台 标准报价 5,450 元人民币 * 以上报价仅供参考,具体以厂商正式报价为准。 电话 021-58549800 Email: tools@sh.grapecity.com http://www.grapecity.com/china
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值