ActiveReports 专业版中所提供的最终用户设计器,能极大程度上满足最终用户对创建、修改报表模板的需求,在安装 ActiveReports 之后所提供的最终用户设计器源码工程包含了报表设计的最基本功能,我们可以根据自己的业务需求实现对设计器的自定义,添加和你业务相关的内置功能,以简化用户对设计器的使用。本文主要演示如何在设计器中添加和自己业务相关的报表模板。

首先,打开 ActiveReports 自带的最终用户设计器源码工程,默认安装地址:C:\Users\用户名\Documents\ComponentOne Samples\ActiveReports Developer 7\Professional\C#\EndUserDesigner ,在 EndUserDesigner 窗体的后台代码中找到创建报表时调用的方法 OnNew,在该方法中通过调用内置的 DesignerAction.NewReport 来创建报表,我需要注释掉这行代码,改为调用我们自定义的模板选择提供器。

实现自定义的模板选择对话框,自定义的模板对话框功能我们是在 Templates 窗体中实现的,该窗体根据模板的类型分别提供了区域报表和页面报表两种类型的多个内置模板,比如:员工信息、产品信息、销售数据、库存分析等内置的报表模板。当用户在 Templates 窗体中选择了模板之后,返回到最终用户设计器主界面,此时,会自动加载用户所选择的报表模板,你可以在内置的模板中添加内置数据源、公司图标、报表名称等基本信息,以简化用户的报表设计工作。

以下代码是调用自定义模板选择对话框的代码:

    private void OnNew(object sender, EventArgs e)
    {
        if (this.ConfirmSaveChanges())
        {
            // ActiveReports 内置的报表模板选择对话框
            //this.reportdesigner.ExecuteAction(DesignerAction.NewReport);
            // 显示自定义的模板选择对话框
            Templates dlgTemplates = new Templates();                
            if (dlgTemplates.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                // 加载用户选择的报表模板
                this.reportdesigner.LoadReport(new FileInfo(dlgTemplates.SelectedTemplate.Path));
                    
                // 设置工具箱是否可见
                EnableTabs();  
            }  
        }
    }

自定义模板选择对话框加载模板的代码如下:

    // 加载自定义的模板
    private void LoadTemplate()
    {            
        ReportTemplate template = new ReportTemplate();
        List<ReportTemplate> list = template.GetAll();
        foreach (ReportTemplate item in list)
        {
            if (item.Type == "Section")
            {
                ListViewItem lvi = new ListViewItem(item.Name);
                lvi.ImageKey = item.Icon;
                lvi.Tag = item;
                lvSection.Items.Add(lvi);
            }
            else
            {
                ListViewItem lvi = new ListViewItem(item.Name);
                lvi.ImageKey = item.Icon;
                lvi.Tag = item;
                lvPage.Items.Add(lvi);
            }
        }
    }

最终运行截图:

1201

源码下载: