使用ActiveReports创建动态区段报表

来源:互联网 发布:如何查询淘宝信用 编辑:程序博客网 时间:2024/05/19 04:26
报表控件ActiveReports的最新7版本提供了更多更广泛的API,让Visual Basic和C#开发者可以完整掌控报表流程引擎,以适应各种复杂报表开发的需求。


  它主要提供的事件和属性类型有:

数据检索

数据转换

布局

渲染

  完善的API意味着开发人员实现在运行时创建报表,一般的报表工具都将报表设计和报表分开运行扯淡,而ActiveReports却可以通过API实现运行时的报表创建,让一些报表的一些动态功能能够实现。接下来就以如何创建动态区段报表为例,说一下灵活运用API的方法。首先看一下最终创建报表的效果:


简单的说一下创建步骤:

创建一个报表实例
动态的添加区段和控件
修改报表区段和控件的相关细节
给报表指派设置数据源
将报表绑定到数据源


  下段代码就能完成所有步骤:

private void Form1_Load(object sender, EventArgs e){   rpt = new SectionReport();     //Adding Page Header/Footer sections   rpt.Sections.InsertPageHF();   rpt.Sections[0].BackColor = Color.LightGray;     //Adding Detail section   rpt.Sections.Insert(1, new Detail());   rpt.Sections[1].BackColor = Color.PeachPuff;   rpt.Sections[1].Height = 1.5f;     //Adding label to display first column's name   GrapeCity.ActiveReports.SectionReportModel.Label lblCategoryID = new GrapeCity.ActiveReports.SectionReportModel.Label();   lblCategoryID.Location = new PointF(0, 0.05F);   lblCategoryID.Text = "Category ID";   lblCategoryID.Alignment = GrapeCity.ActiveReports.Document.Section.TextAlignment.Center;   lblCategoryID.Font = new System.Drawing.Font("Arial", 10, FontStyle.Bold);   rpt.Sections[0].Controls.Add(lblCategoryID);     //Adding label to display second column's name   GrapeCity.ActiveReports.SectionReportModel.Label lblCategoryName = new GrapeCity.ActiveReports.SectionReportModel.Label();   lblCategoryName.Location = new PointF(1.459f, 0.05f);   lblCategoryName.Size = new SizeF(1.094f,0.2f);   lblCategoryName.Text = "Category Name";   lblCategoryName.Font = new System.Drawing.Font("Arial", 10, FontStyle.Bold);   rpt.Sections[0].Controls.Add(lblCategoryName);     //Adding label to display third column's name   GrapeCity.ActiveReports.SectionReportModel.Label lblDescription = new GrapeCity.ActiveReports.SectionReportModel.Label();   lblDescription.Location = new PointF(3.114f, 0.05f);   lblDescription.Text = "Description";   lblDescription.Font = new System.Drawing.Font("Arial", 10, FontStyle.Bold);   rpt.Sections[0].Controls.Add(lblDescription);     //Adding label to display fourth column's name   GrapeCity.ActiveReports.SectionReportModel.Label lblPicture = new GrapeCity.ActiveReports.SectionReportModel.Label();   lblPicture.Location = new PointF(5.219f, 0.05f);   lblPicture.Alignment = GrapeCity.ActiveReports.Document.Section.TextAlignment.Center;   lblPicture.Text = "Picture";   lblPicture.Font = new System.Drawing.Font("Arial", 10, FontStyle.Bold);   rpt.Sections[0].Controls.Add(lblPicture);     //Adding Textbox to display first column's records   GrapeCity.ActiveReports.SectionReportModel.TextBox txtCategoryID = new GrapeCity.ActiveReports.SectionReportModel.TextBox();   txtCategoryID.Location = new PointF(0,0);   txtCategoryID.Alignment = GrapeCity.ActiveReports.Document.Section.TextAlignment.Center;   rpt.Sections[1].Controls.Add(txtCategoryID);     //Adding Textbox to display second column's records   GrapeCity.ActiveReports.SectionReportModel.TextBox txtCategoryName = new GrapeCity.ActiveReports.SectionReportModel.TextBox();   txtCategoryName.Location = new PointF(1.459f,0);   rpt.Sections[1].Controls.Add(txtCategoryName);     //Adding Textbox to display third column's records   GrapeCity.ActiveReports.SectionReportModel.TextBox txtDescription = new GrapeCity.ActiveReports.SectionReportModel.TextBox();   txtDescription.Location = new PointF(3.114f,0);   rpt.Sections[1].Controls.Add(txtDescription);     //Adding Picture control to display image   GrapeCity.ActiveReports.SectionReportModel.Picture picture = new Picture();   picture.Location = new PointF(5.219f,0);   rpt.Sections[1].Controls.Add(picture);     // Setting report's data source   conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\stduser\Documents\ComponentOne Samples\ActiveReports Developer 7\Data\NWIND.mdb;Persist Security Info=False");   System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("SELECT * FROM Categories", conn);   conn.Open();   reader = cmd.ExecuteReader();   rpt.DataSource = reader;     // Assigning DataField properties of controls in the detail section   txtCategoryID.DataField = "CategoryID";   txtCategoryName.DataField = "CategoryName";   txtDescription.DataField = "Description";   picture.DataField = "Picture";   reader.Close();   conn.Close();}

原文地址:http://www.evget.com/zh-CN/Info/catalog/19285.html