【Stimulsoft Reports.WinForms教程】在運(yùn)行時(shí)使用業(yè)務(wù)對(duì)象創(chuàng)建報(bào)表
【下載Stimulsoft Reports.Ultimate最新版本】
此示例顯示如何使用代碼中的Business Objects集合創(chuàng)建報(bào)表,Business Objects是一個(gè)對(duì)象類數(shù)據(jù),使用它可以以不同的結(jié)構(gòu)呈現(xiàn)數(shù)據(jù):表,列表,數(shù)組等,F(xiàn)illBusinessObject方法創(chuàng)建并填充數(shù)據(jù)集合:
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")); }
創(chuàng)建數(shù)據(jù),現(xiàn)在需要顯示它,首先,在dictionary中創(chuàng)建一個(gè)新的報(bào)表和數(shù)據(jù)結(jié)構(gòu),從Business Object將數(shù)據(jù)傳輸?shù)絛ictionary:
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]; ...
將組件添加到報(bào)表模板,創(chuàng)建bands Header,數(shù)據(jù)和頁腳,這些band用于放置帶有文本的文本框或?qū)usiness 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); ...
在此之后,您可以呈現(xiàn)報(bào)表并在查看器中顯示它(或調(diào)用報(bào)表設(shè)計(jì)器):
... //Render without progress bar report.Render(false); report.Show(); //For checking created report you can uncomment this line //report.Design(); }
示例代碼的結(jié)果如下圖所示: