本帖最后由 Bella.Yuan 于 2023-12-11 10:25 编辑
17.2.0将共享数据源也添加到web设计器里面。以前只能在桌面设计器使用共享数据源。现在web端也可以了。
那什么是共享数据源和为什么要用他呢?
首先共享数据源简单的说就是可以共享使用,每个人都可以直接通过选择就是用这个数据源,而不在需要输入连接信息 。
那么使用场景当然也就可想而知了,就是不希望设计报表的人员看到数据库连接信息。他们只需要关注设计报表即可。而且也不用担心数据库连接信息被知道。
那么接下来就给大家说一下,web端如何使用共享数据源。(WebDesigner)
首先,共享数据源需要使用桌面设计器设计出来,具体操作如下:
只需要将桌面设计器设计好的数据源,右键点击共享数据员,即可保存为.rdsx文件(共享数据源)
WebDesigner:
添加共享数据源整体只需要3步。本文以如下链接示例为例子:
https://github.com/activereports/WebSamples17/tree/main/WebDesignerSamples/WebDesigner_MVC_Core
准备工作,将准备好的rdsx文件放置在resource文件夹下
1.自己新创建一个类,实现:ISharedDataSourceService接口,示例代码:
- public class SharedDataSourceService : ISharedDataSourceService
- {
- public SharedDataSourceInfo[] GetSharedDataSourceList()
- {
- return Startup.ResourcesRootDirectory
- .EnumerateFiles("*.rdsx")
- .Select(x =>
- {
- var dataSource = GetDataSource(x.Name);
- return new SharedDataSourceInfo()
- {
- Name = x.Name,
- Type = dataSource.ConnectionProperties.DataProvider
- };
- }).ToArray();
- }
- public DataSource GetDataSource(string name)
- {
- return DataSourceTools.LoadSharedDataSource(Path.Combine(Startup.ResourcesRootDirectory.FullName, name));
- }
- }
复制代码
如上代码其实就是读取 resource目录。然后把以.rdsx为后缀的文件全部拿到。返回为指定格式的数组。
2.修改startup文件。
在ConfigureServices 方法中,新添加.AddSingleton<ISharedDataSourceService, SharedDataSourceService>() 将我们刚实现的类注册进来。
完整代码:
- public void ConfigureServices(IServiceCollection services)
- {
- Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
- services
- .AddReporting()
- .AddDesigner()
- .AddSingleton<ITemplatesService>(new FileSystemTemplates(TemplatesRootDirectory))
- .AddSingleton<IDataSetsService>(new CustomDataSetTemplates())
- .AddSingleton<ISharedDataSourceService, SharedDataSourceService>()
- .AddMvc(options => options.EnableEndpointRouting = false)
- .AddJsonOptions(options => options.JsonSerializerOptions.PropertyNamingPolicy = null);
- }
复制代码 其次修改Configure方法,新增一个入参,ISharedDataSourceService sharedDataSourceService 依旧是我们刚才注册的。
其次在useDesigner中,添加config.UseSharedDataSources(sharedDataSourceService);将入参传递进来。
完整代码:
- public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IDataSetsService dataSetsService, ISharedDataSourceService sharedDataSourceService)
- {
- if (env.IsDevelopment())
- {
- app.UseDeveloperExceptionPage();
- }
-
- app.UseFileServer();
- app.UseReporting(config => config.UseFileStore(ResourcesRootDirectory));
- app.UseDesigner(config =>
- {
- config.UseSharedDataSources(sharedDataSourceService);
- config.UseFileStore(ResourcesRootDirectory, false);
- config.UseDataSetTemplates(dataSetsService);
- });
- app.UseMvc();
- }
复制代码 3.修改前段js,将共享数据源开放出来
这个我们只需要在create的时候,修改data的一个对象即可
完整代码:
- arWebDesigner.create('#ar-web-designer', {
- rpx: { enabled: true },
- appBar: { openButton: { visible: true } },
- data: {
- dataSets: { canModify: true }, dataSources: {
- canModify: true,
- shared: { enabled: true }
- }
- },
- preview: {
- openViewer: (options) => {
- if (viewer) {
- viewer.openReport(options.documentInfo.id);
- return;
- }
- viewer = createViewer({
- element: '#' + options.element,
- reportService: {
- url: 'api/reporting',
- },
- reportID: options.documentInfo.id,
- settings: {
- zoomType: 'FitPage',
- },
- });
- }
- }
- });
复制代码 data -> dataSource -> shared开启即可。
至此,一个webDesigner的共享数据源添加就完成了。
示例Demo:
|