Page tree
Skip to end of metadata
Go to start of metadata

报表展示的时候总的分为两种数据连接的方式:数据库直连、动态数据源绑定。在项目中基于安全性和前后端分离的考虑,一般都会进行一个动态数据源绑定。本节我们就来讲讲如何在项目中进行动态数据源的绑定

1、首先进行报表层面数据源和数据集的处理

添加数据源:命名为:DataSource1、择数据类型:DatasetProvider

添加数据集:命名:DataSet1

添加数据字段:字段值的命名跟后端动态数据源的字段命名要一致。

2、进行报表设计并且进行字段绑定

3、新建一个.Net Core的项目然后集成ActiveReports报表控件,这个具体可以参考上节集成的讲解,具体参考:.Net Core 框架中使用ActiveReports

4、打开Startup.cs文件,进行动态数据的绑定

namespace WebCore001
{
    public class Startup
    {
        public static string EmbeddedReportsPrefix = "WebCore001.Reports";
        string ReportName = "";      
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services
                .AddLogging(config =>
                {
                    // Disable the default logging configuration
                    config.ClearProviders();

                    // Enable logging for debug mode only
                    if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == Environments.Development)
                    {
                        config.AddConsole();
                    }
                })
                .AddReporting()
                .AddMvc(option => option.EnableEndpointRouting = false);
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
             string path = env.ContentRootPath;
            app.UseReporting(settings =>
            {
                settings.UseCompression = true;
                //settings.UseFileStore(new DirectoryInfo(@"D:\Demo\JS-Viewer\WebCore001\WebCore001\Reports\"));       
                settings.UseFileStore(new DirectoryInfo(String.Format(@"{0}.\Reports\", path)));               
                settings.LocateDataSource = args =>
                {
                    DataTable dt = new DataTable();
                    string name = ReportName;
                    if (args.DataSet.Query.DataSourceName == "DataSource1")
                    {
                        if (args.DataSet.Name == "DataSet1")
                        {
                            dt.Columns.Add("产品编号");
                            dt.Columns.Add("产品名称");
                            dt.Columns.Add("单价");
                            dt.Columns.Add("库存量");
                            dt.Columns.Add("产地");
                            dt.Rows.Add("A001", "苹果", 10, 300, "中国");
                            dt.Rows.Add("A002", "葡萄", 20, 200, "中国");
                            dt.Rows.Add("A003", "香蕉", 30, 400, "中国");
                            dt.Rows.Add("A004", "甘蔗", 10, 300, "中国");
                            dt.Rows.Add("A005", "荔枝", 20, 200, "中国");
                            dt.Rows.Add("A006", "芒果", 30, 400, "中国");
                            dt.Rows.Add("A007", "猕猴桃", 110, 300, "中国");
                            dt.Rows.Add("A008", "柠檬", 210, 200, "中国");
                            dt.Rows.Add("A009", "栗子", 320, 400, "中国");
                            dt.Rows.Add("A010", "火龙果", 100, 300, "中国");
                            dt.Rows.Add("A011", "青芒", 250, 200, "中国");
                            dt.Rows.Add("A012", "巴旦木", 320, 200, "中国");
                            dt.Rows.Add("A013", "土豆", 380, 400, "中国");
                            dt.Rows.Add("A014", "苹果", 110, 300, "中国");
                            dt.Rows.Add("A015", "葡萄", 420, 200, "中国");
                            dt.Rows.Add("A016", "香蕉", 530, 400, "中国");
                            dt.Rows.Add("A017", "土豆", 380, 400, "中国");
                            dt.Rows.Add("A018", "苹果", 110, 300, "中国");
                            dt.Rows.Add("A019", "葡萄", 420, 200, "中国");
                            dt.Rows.Add("A020", "香蕉", 530, 400, "中国");
                            dt.Rows.Add("A021", "苹果", 10, 300, "中国");
                            dt.Rows.Add("A022", "葡萄", 20, 200, "中国");
                            dt.Rows.Add("A023", "香蕉", 30, 400, "中国");
                            dt.Rows.Add("A024", "甘蔗", 10, 300, "中国");
                            dt.Rows.Add("A025", "荔枝", 20, 200, "中国");
                            dt.Rows.Add("A026", "芒果", 30, 400, "中国");
                            dt.Rows.Add("A001", "苹果", 10, 300, "中国");
                            dt.Rows.Add("A002", "葡萄", 20, 200, "中国");
                            dt.Rows.Add("A003", "香蕉", 30, 400, "中国");
                            dt.Rows.Add("A004", "甘蔗", 10, 300, "中国");
                            dt.Rows.Add("A005", "荔枝", 20, 200, "中国");
                            dt.Rows.Add("A006", "芒果", 30, 400, "中国");
                            dt.Rows.Add("A007", "猕猴桃", 110, 300, "中国");
                            dt.Rows.Add("A008", "柠檬", 210, 200, "中国");
                            dt.Rows.Add("A009", "栗子", 320, 400, "中国");
                            dt.Rows.Add("A010", "火龙果", 100, 300, "中国");
                            dt.Rows.Add("A011", "青芒", 250, 200, "中国");
                            dt.Rows.Add("A012", "巴旦木", 320, 200, "中国");
                            dt.Rows.Add("A013", "土豆", 380, 400, "中国");
                            dt.Rows.Add("A014", "苹果", 110, 300, "中国");
                            dt.Rows.Add("A015", "葡萄", 420, 200, "中国");
                            dt.Rows.Add("A016", "香蕉", 530, 400, "中国");
                            dt.Rows.Add("A017", "土豆", 380, 400, "中国");
                            dt.Rows.Add("A018", "苹果", 110, 300, "中国");
                            dt.Rows.Add("A019", "葡萄", 420, 200, "中国");
                            dt.Rows.Add("A020", "香蕉", 530, 400, "中国");
                            dt.Rows.Add("A021", "苹果", 10, 300, "中国");
                            dt.Rows.Add("A022", "葡萄", 20, 200, "中国");
                            dt.Rows.Add("A023", "香蕉", 30, 400, "中国");
                            dt.Rows.Add("A024", "甘蔗", 10, 300, "中国");
                            dt.Rows.Add("A025", "荔枝", 20, 200, "中国");
                            dt.Rows.Add("A026", "芒果", 30, 400, "中国");
                        }
                    }                 
                    return dt;
                };

            });

            app.UseMvc();
        }
    }
}

5、预览展示




相关资源:


注意

如需寻求在线帮助,请访问 ActiveReports 求助中心

如需了解更多ActiveReports产品特性,请访问 ActiveReports 官方网站

ActiveReports 官方技术交流群:109783140

下载产品体验产品功能:http://www.gcpowertools.com.cn/products/download.aspx?pid=16

  • No labels