文檔金喜正規買球>>Stimulsoft Reports.WinForms教程-2019>>【Stimulsoft Reports.WinForms教程】在運行時使用業務對象創建報表
【Stimulsoft Reports.WinForms教程】在運行時使用業務對象創建報表
【下載Stimulsoft Reports.Ultimate最新版本】
此示例顯示如何使用代碼中的Business Objects集合創建報表,Business Objects是一個對象類數據,使用它可以以不同的結構呈現數據:表,列表,數組等,FillBusinessObject方法創建并填充數據集合:
private ArrayList list = null; private void FillBusinessObject() { list = new ArrayList(); list.Add(new BusinessEntity("name1", "alias1")); list.Add(new BusinessEntity("name2", "alias2")); list.Add(new BusinessEntity("name3", "alias3")); }
創建數據,現在需要顯示它,首先,在dictionary中創建一個新的報表和數據結構,從Business Object將數據傳輸到dictionary:
private void PrintDataGrid(DataGrid sender) { StiReport report = new StiReport(); report.ScriptLanguage = StiReportLanguageType.CSharp; //Add data to datastore report.RegData("MyList", list); //Fill dictionary report.Dictionary.Synchronize(); StiPage page = report.Pages.Items[0]; ...
將組件添加到報表模板,創建bands Header,數據和頁腳,這些band用于放置帶有文本的文本框或對Business Object字段的引用:
... //Create HeaderBand StiHeaderBand headerBand = new StiHeaderBand(); headerBand.Name = "HeaderBand"; page.Components.Add(headerBand); //Create Databand StiDataBand dataBand = new StiDataBand(); dataBand.DataSourceName = "MyList"; dataBand.Height = 0.5f; dataBand.Name = "DataBand"; page.Components.Add(dataBand); StiDataSource dataSource = report.Dictionary.DataSources[0]; //Create texts Double pos = 0; Double columnWidth = StiAlignValue.AlignToMinGrid(page.Width / dataSource.Columns.Count, 0.1, true); int nameIndex = 1; foreach (StiDataColumn column in dataSource.Columns) { if (column.Name == "_ID" || column.Name == "_Current")continue; //Create text on header StiText headerText = new StiText(new RectangleD(pos, 0, columnWidth, 0.5f)); headerText.Text.Value = column.Name; headerText.HorAlignment = StiTextHorAlignment.Center; headerText.Name = "HeaderText" + nameIndex.ToString(); headerText.Brush = new StiSolidBrush(Color.MediumSeaGreen); headerText.Border.Side = StiBorderSides.All; headerBand.Components.Add(headerText); //Create text on Data Band StiText dataText = new StiText(new RectangleD(pos, 0, columnWidth, 0.5f)); dataText.Text.Value = "{MyList." + column.Name + "}"; dataText.Name = "DataText" + nameIndex.ToString(); dataText.Border.Side = StiBorderSides.All; dataBand.Components.Add(dataText); pos += columnWidth; nameIndex ++; } //Create FooterBand StiFooterBand footerBand = new StiFooterBand(); footerBand.Height = 0.5f; footerBand.Name = "FooterBand"; page.Components.Add(footerBand); //Create text on footer StiText footerText = new StiText(new RectangleD(0, 0, page.Width, 0.5f)); footerText.Text.Value = "Count - {Count()}"; footerText.HorAlignment = StiTextHorAlignment.Right; footerText.Name = "FooterText"; footerText.Brush = new StiSolidBrush(Color.LightGreen); footerBand.Components.Add(footerText); ...
在此之后,您可以呈現報表并在查看器中顯示它(或調用報表設計器):
... //Render without progress bar report.Render(false); report.Show(); //For checking created report you can uncomment this line //report.Design(); }
示例代碼的結果如下圖所示: