0

我想在 ASP.NET 中有一个简单的登录系统的站点。登录后,还会有指向 SSRS 中生成的报告的链接。但是每个用户都会有不同的链接,他可以看到。我想通过 Windows 身份验证检查的昵称和密码。
1)我想知道是否可以将这些信息保存在数据库以外的其他地方?
2) 如何获得与报表管理器中类似的布局?我的意思是,如何使用 ASP.NET 显示我的报告?

我是 ASP.NET 的新手(我不知道是否可以做这样的事情),所以我希望我自己说清楚。

提前致谢,
莫尼克

4

1 回答 1

1

问题 1:你在谈论什么样的信息,给出一个编码示例或基于你的社区可以工作的结构的东西。

编辑:是的,可以将报告放在单独的位置。此外,这意味着对于每个用户,您必须在 SSRS 下创建权限,然后在您的页面中参考用户对 SSRS 的身份验证。从那里开始,您将使用 SSRS 功能。这意味着管理员需要在每个新用户身边插入用户可能看到的报告。这是一种不方便的方法,因为只提供 SSRS 地址更容易,这样您的所有用户都可以从那里工作。(但是,对于页面的外观,您无话可说。)

问题2:ASP.net 有一个reportviewer 控件,使您能够查看报表服务器上可用的特定报表。SSRS 报表查看器的大部分功能都可以在此控件中进行模拟。请注意,您在使用它时需要非常了解该控件。http://msdn.microsoft.com/en-us/library/ms251671(v=vs.110).aspx

作为旁注:

我曾经创建了一个网站,该网站的用户根据他们的用户 ID 对不同的报告、不同的参数拥有权限。我有一个由实习生 (SSO) 和外部用户组成的用户表。也有不同的角色。基于这一切,赋予了不同的权利。

报告查看器的链接使用普通报告用户而不是用户自己的身份验证,然后用户 ID 作为额外参数给出,其他参数基于。

编辑:

当您希望某些用户获得对报告的访问权限时,请创建 3 个表:用户、报告和 UserReportLink

例子:

Userid | Name
1      | user A
2      | user B
3      | user C

Reportid | Name     |ReportLink
1        | report A | 'http://MyReportServer/reports/Report1.aspx'
2        | report B | 'http://MyReportServer/reports/Report2.aspx'
3        | report C | 'http://MyReportServer/reports/Report3.aspx'
4        | report D | 'http://MyReportServer/reports/Report4.aspx'

Userreportid | Userid | Reportid
1            | 1      | 1    
2            | 1      | 2
3            | 2      | 1    
4            | 2      | 2
5            | 2      | 3    
6            | 3      | 2
7            | 3      | 3    
8            | 3      | 4

然后,您的页面将包含以下报告逻辑:

=> 返回登录的用户(会话可能因为它是 asp.net)

=> 返回用户需要查看的所有报告的列表

var q = (from m in UserReportLinks
         where m.Userid = this.UserId
         select m).ToList();

=> 有了上述内容,您就可以为用户提供报告。

var l = new List<Report>();
foreach(var item in q)
{
 var r = (from m in Reports
          where m.Reportid = item.Reportid
          return m).ToList();
 l.Add(r);
}
//populate a control so the user can select a report
aControl.DataSource = l;

=> 最后,使用 selectedId 将报告返回到报告查看器。

=> 选择参数等...

于 2013-12-06T13:02:08.190 回答