本指南阐明如何使用 XRChart 控件,在分组报表中形象地显示数据。 关于 XtraReports 中分组功能的信息,请参阅 对数据分组 主题。
每个行分组都有图表的报表是形象而信息丰富的。 GroupFooter(分组脚注) 带区是放置图表最常用也最合适的地方。 为相应的分组标头插入分组脚注 (请参阅 报表带区 主题获得更多信息)。 检查标头带区和脚注带区的 GroupBand.Level 值是否相等。 把 XRChart 控件拖放到带区。 规定 XRChart.DataSource 属性与报表的属性相同 (对于主/从报表 —— 与执行分组的报表的属性相同)。 把数据系列添加到绘图,并按照需要定制其他图表元素。
如果现在正好运行项目,那么每个分组的图表都将是相同的,都显示数据集中的所有数据。 其原因是 XRChart 控件独立于报表带区而取回数据。 要使之与报表的分组同步,则需要为图表实现数据筛选。
通过接管 XRChart 控件的 BeforePrint 事件,可以完成此任务,如下列代码中所示。
C# | 复制代码 |
---|---|
private void xrChart1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { XRChart xrc = (XRChart)sender; // Gets the current value of the grouping field. // For the master-detail report use DetailBand.GetCurrentColumnValue in detail part instead. string filter_value = GetCurrentColumnValue("TheGroupingField").ToString(); // Clears the filters that may be set before. xrc.Series[0].DataFilters.Clear(); // Creates and adds a new filter on the data field "TheGroupingField" // that has the type System.String. // The condition is that the data value equals the filter_value parameter. xrc.Series[0].DataFilters.Add(new DataFilter("TheGroupingField", "System.String", DataFilterCondition.Equal, filter_value)); } |
Visual Basic | 复制代码 |
---|---|
Private Sub xrChart1_BeforePrint(ByVal sender As Object, _ ByVal e As System.Drawing.Printing.PrintEventArgs) Dim xrc As XRChart = CType(sender,XRChart) ' Gets the current value of the grouping field. ' For the master-detail report use DetailBand.GetCurrentColumnValue in detail part instead. Dim filter_value As String = GetCurrentColumnValue("TheGroupingField").ToString ' Clears the filters that may be set before. xrc.Series(0).DataFilters.Clear ' Creates and adds a new filter on the data field "TheGroupingField" ' that has the type System.String. ' The condition is that the data value equals the filter_value parameter. xrc.Series(0).DataFilters.Add(New DataFilter("TheGroupingField", "System.String", _ DataFilterCondition.Equal, filter_value)) End Sub |
可以使用 AND 或 OR 连接运算符合并几个筛选。 通过 DataFilterCollection.ConjunctionMode 属性 (属于 DataFilterCollection 对象),或者通过系列的 SeriesBase.DataFiltersConjunctionMode 属性来指定它。 当为系列创建一个或多个数据筛选对象时,所显示的系列将只包含满足筛选条件的数据点。