天天看點

MindFusion.Reporting for WinForms程式員指南:将報告綁定到資料源

MindFusion.Reporting for WinForms​是一個原生的Windows Forms程式設計元件,它為任何.NET應用程式提供專業的報表功能。該元件完全使用C#語言編寫,易于使用和內建。它提供您建立一個完美報表所需要的一切。

有幾種方法可以在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 for WinForms程式員指南:将報告綁定到資料源

你需要選擇你想在資料範圍中出現的字段,以及資料範圍是否應該有頁眉。代表所選字段的标簽沿新建立的資料範圍的寬度均勻分布。

資料綁定圖表對象

有一種類型的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;      
Me.barChart1.XLabelsFields="ProductName"
Me.barChart1.XAxisSettings.LabelType = MindFusion.Charting.AxisLabelType.CustomText;