彩票走势图

MindFusion.Reporting for WinForms程序员指南:将报告绑定到数据源

翻译|使用教程|编辑:杨鹏连|2021-04-08 11:26:24.167|阅读 99 次

概述:本文介绍了几种方法可以在MindFusion.Reporting报表中创建数据绑定的内容。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

MindFusion.Reporting for WinForms是一个原生的Windows Forms编程组件,它为任何.NET应用程序提供专业的报表功能。该组件完全使用C#语言编写,易于使用和集成。它提供您创建一个完美报表所需要的一切。MindFusion.Reporting for WinForms现已加入在线订购,Standard Single Developer版本原价2848现在抢购立享优惠只需2345,立即查看详情>>

点击下载MindFusion.Reporting for WinForms最新试用版

有几种方法可以在MindFusion.Reporting报表中创建数据绑定的内容。大多数的数据绑定机制涉及到使用一个或多个DataRange对象。也可以在数据范围之外创建数据绑定的Chart对象。

注释说明
下面的章节假定您已经熟悉了向.NET应用程序添加数据源的过程。有关如何进行此操作的分步教程。

使用DataRange对象

为了执行数据绑定,你必须创建一个DataRange对象并将其添加到报表中。然后将适当的数据源分配给数据范围的DataSource属性,并将相应的数据成员(通常是表或视图)的名称分配给其DataMember属性。您可以从报表设计器中的属性网格或直接通过代码来完成这项工作。

在下面的示例中,一个数据范围被绑定到现有数据集中的 Employees 表。

c#

this.dataRange1.DataSource = this.nwindDataSet1;
this.dataRange1.DataMember = "Employees";
Visual Basic
Me.dataRange1.DataSource = Me.nwindDataSet1
Me.dataRange1.DataMember = "Employees"
上述代码假设dataRange1标识了现有的DataRange对象和nwindDataSet1--一个现有的.NET DataSet对象。

一旦数据范围被绑定到数据源,您就可以将该数据范围中包含的报表项与绑定的数据成员中的各个字段相关联,方法是将字段的名称分配给项的DataField属性。在本例中,如果我们假设在数据范围内有一个标签label1,我们可以通过将 "FirstName "分配给标签的DataField属性,将这个标签与雇员表中的 "FirstName "字段关联起来。

C#

this.label1.DataField = "FirstName"
Visual Basic
Me.label1.DataField="FirstName"
当运行报表时,数据范围将被乘以雇员表中有记录的次数。数据范围中每次出现的标签1将包含对应记录中的雇员的 "FirstName"。

注意事项
目前,还不能在页眉和页脚中创建数据绑定的DataRange对象。

主细节关系

MindFusion.Reporting通过数据范围组成支持主细节关系。你需要创建一个数据范围,绑定到其中一个数据成员。然后,你需要创建另一个数据范围,作为第一个数据范围的子数据范围,绑定到与第一个数据成员相关的数据成员。最后,你必须指定关系的名称作为内部数据范围的MasterDetailRelation属性的值。下面的代码说明了这一点。

C#

this.innerRange.DataMember = "Products";
this.innerRange.MasterDetailRelation = "CategoriesProducts";

this.externalRange.DataSource = this.nwindDataSet1;
this.externalRange.DataMember = "Categories";
this.externalRange.Items.Add(this.innerRange);
Visual Basic
Me.innerRange.DataSource = Me.nwindDataSet1;
Me.innerRange.DataMember = "Products"
Me.innerRange.MasterDetailRelation="CategoriesProducts"

Me.externalRange.DataSource = Me.nwindDataSet1
Me.externalRange.DataMember = "Categories"
Me.extraRange.Items.Add(Me.innerRange)
该代码做了许多假设,包括由innerRange和 outerRange引用的DataRange对象的正确性,以及 "Categories "和 "Products "数据成员在指定数据集中的可用性。

通过报表设计器可以很容易地将内部数据范围拖到外部数据范围,从而实现数据范围的组成。

自动化

可以在报表设计器中自动创建数据绑定的DataRange对象。这种自动创建包括自动设置数据范围的DataSource和DataMember属性,以及向新的数据范围添加一个或多个代表单个数据字段的标签。也可以创建一个标题,包含带有各列名称的静态标签文本。

要创建一个数据绑定的DataRange对象,请在报表设计器中的页面表面的任意位置右击,并从上下文菜单中选择 "Create DataRange from Adapter... "命令。该命令会显示一个对话框,其中包含报表中当前可用的表适配器。为了使其工作,您必须在报表中至少创建一个数据适配器,以创建新的数据范围。下图显示了该对话框的样子。

你需要选择你想在数据范围中出现的字段,以及数据范围是否应该有页眉。代表所选字段的标签沿新创建的数据范围的宽度均匀分布。

数据绑定图表对象

有一种类型的MindFusion.Reporting元素可以不需要将它们放置在数据绑定的DataRange对象中就可以进行数据绑定,即从Chart派生的类--BarChart、LineChart、PieChart和RadarChart。关于这些元素以及如何在报表中使用它们的更多信息,请查看报表中的图表。

与数据范围一样,你可以通过使用它们的DataSource和DataMember分别指定数据源和成员来绑定Chart对象。然后你需要通过适当的属性来指定要绑定的字段。如果你想数据绑定一个BarChart对象,你应该将数据字段的名称分配给它的DataFields属性。如果要绑定一个PieChart,应该将数据字段的名称分配给它的DataField属性。要绑定一个LineChart,应使用它的XDataFields和YDataFields属性。最后,要绑定一个RadarChart,使用它的DataFields属性。

例如,下面的代码将由变量barChart1引用的BarChart对象绑定到一个数据源的表 "Products "中的字段 "UnitPrice "上,该数据源由变量dataSet1引用的.NET数据集识别。

C#

this.barChart1.DataFields = "UnitPrice";
this.barChart1.DataMember = "Products";
this.barChart1.DataSource = this.dataSet1;

Visual Basic

Me.barChart1.DataFields="UnitPrice"
Me.barChart1.DataMember = "Products"
Me.barChart1.DataSource = Me.dataSet1
Chart对象提供了其他可以进行数据绑定的属性。例如,BarChart 类的 XLabelsFields 属性可以设置为字段的名称,以提供横跨 x 轴的标签文本。为了使这种绑定有效,您还必须将BarChart类的XAxisSettings属性的LabelType属性设置为CustomText。下面是如何在代码中实现这一点。
C#
this.barChart1.XLabelsFields = "ProductName";
this.barChart1.XAxisSettings.LabelType = MindFusion.Charting.AxisLabelType.CustomText;
Visual Basic
Me.barChart1.XLabelsFields="ProductName"
Me.barChart1.XAxisSettings.LabelType = MindFusion.Charting.AxisLabelType.CustomText;


想要购买该产品正版授权请点击【商城购买】,想了解更多产品信息请点击


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP