ActiveReports 7的扩展API可以让Visual Basic和C#开发人员完全控制报表处理引擎,从而以满足业务的需求。
- Data Retrieval
- Data Transformation
- Layout
- Rendering
这些API使开发人员可以从头开始创建自己的报表,并拥有报表创建的完整控制权--在运行时创建报表。
运行时创建报表的步骤:
- 创建报表实例
- 动态添加报表控件和报表区域
- 修改报表区域和报表控件布局、大小、颜色等
- 绑定报表数据源
完整源码如下:
Code Snippet- privatevoid Form1_Load(object sender, EventArgs e)
- {
- rpt =newSectionReport();
- //Adding Page Header/Footer sections
- rpt.Sections.InsertPageHF();
- rpt.Sections[0].BackColor =Color.LightGray;
- //Adding Detail section
- rpt.Sections.Insert(1, newDetail());
- 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 =newPointF(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 =newPointF(1.459f, 0.05f);
- lblCategoryName.Size =newSizeF(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 =newPointF(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 =newPointF(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 =newPointF(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 =newPointF(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 =newPointF(3.114f,0);
- rpt.Sections[1].Controls.Add(txtDescription);
- //Adding Picture control to display image
- GrapeCity.ActiveReports.SectionReportModel.Picture picture =newPicture();
- picture.Location =newPointF(5.219f,0);
- rpt.Sections[1].Controls.Add(picture);
- // Setting report's data source
- conn =newOleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\rogerwang\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";
- rpt.Run();
- this.viewer1.Document = rpt.Document;
- reader.Close();
- conn.Close();
- }