c# - ReportViewer 可以在本地模式下自行提取数据吗?
问题描述
我的任务是制作一个网页(aspx),它会自动读取rdlc
s,并生成一个网页,顶部的参数为webelements,报告为页面的主要部分。
到目前为止,我已经尝试将文件作为 XML-Doc 读取,并从中解析信息。但这可能会更简单。(我对报告或rdl(c)
文件没有经验)。
我看到有一个DataSets/DataSet/Query/CommandText
-Tag,它可以保存一个SQL 语句。现在让我的老板和我自己假设,有可能让它自己已经提供这些信息,我对此进行了编码。另一方面,我看不到任何例子。
我当前的代码如下所示:
private string rdlcFilepath = "some/path/to/file.rdlc";
protected void Page_Load(object sender, EventArgs e) {
string sql = GetSqlStatementFromRdlcFile(rdlcFilepath);
DataTable dtTest = DatabseFacade.Execute_SQL(sql);
MainReportViewer.LocalReport.ReportPath = Server.MapPath(rdlcFilepath);
MainReportViewer.ProcessingMode = ProcessingMode.Local;
MainReportViewer.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dtTest));
MainReportViewer.LocalReport.Refresh();
}
所以,我有两个理论:
- -Tag 标记是“报告服务器”的
CommandText
一个标记,只能在 中使用ProcessingMode.Remote
,在本地模式下不相关。 - 我正在接近这整件事是错误的。
如果 2 为真,那么问题可能是手动添加dtTest
,它应该有一些其他指令来使报告元素自己“拉”数据。
我的问题:
- 我的假设之一是否正确,或者发生了什么?
- 任何其他可能有帮助的提示/链接?
我可能会注意到,我在互联网上看到的每个教程/示例都ProcessingMode.Local
使用了“外部”数据表和LocalReport.DataSources.Add
方式。
为了清楚起见,我们(我的老板和我的)理想的解决方案是一些“魔术”命令,它使 ReportViewer 使用rdlc
文件中的信息连接到数据库并显示结果。毕竟它包含所有信息,从连接字符串到 SQL 语句。
解决方案
请注意,rdl 文件是 Native SSRS 报告版本,开发起来更快更容易。这里需要的Project的类型是“Reporting Services Project”,而rdlc是rdl文件的客户端,一般是在普通的visual studio web或者桌面项目中开发的,当然是作为本地报表使用的,通常需要比较多的时间要进行开发,您必须提供所有数据源、数据集和参数(如果有)。在我看来,您的问题有更简单的解决方案。您实际上可以设置远程或本地 SSRS 报告服务服务器,这将使您能够在本地处理报告(rdl 文件),这基本上更清洁、更快。在性能方面,我认为本机模式可以扩展并优于本地或客户端报告选项 (.rdlc)。使用这种方法,您不必添加数据源或数据集或参数,因为所有这些您将在本机配置并使用配置管理器来配置共享数据源和数据集。您只需在您的页面中验证使用并提供您的 SSRS 服务器的 URI、用户名、密码和报告路径。要了解有关配置 SSRS 服务器的更多信息,请使用此链接: SQL Server 报告服务配置管理器
网上也有很多链接。您可以像下面的代码示例所示对用户进行身份验证:
// Set the processing mode for the ReportViewer to Remote
ReportViewer1.ProcessingMode = ProcessingMode.Remote;
ServerReport serverReport = ReportViewer1.ServerReport;
ReportViewer1.ServerReport.ReportServerCredentials = new CustomReportCredentials("username", "password", "domain/Ip");
serverReport.ReportServerUrl =
new Uri("http://xx.xxx.xxx.222/ReportServer_MSSQLSERVER2016");
serverReport.ReportPath = "/Reports/Report3";
ReportViewer1.ServerReport.Refresh();
这是关于将凭据传递到 Sql Report Server 2008 的一个很好的链接 将凭据 传递到 Sql Report Server 2008 这就是您需要做的所有事情。只需拖动报表查看器并验证用户身份即可。希望这对你有帮助。
推荐阅读
- netlogo - Netlogo:如何将固定分发包含到网络中
- r - 在 R studio 中应用 Fp-growth 算法对事务数据集生成关联规则
- javascript - 我如何在 html/template 恐慌中解析 reactjs 文件:html/template: template.Must(template.ParseGlob("PersonalDetails.js"))
- c# - c# - 如何使用自定义标签仅为主要刻度线设置标签
- python - 部署 Dash 应用程序时出现 Heroku 应用程序错误
- android - 使用 Firebase 作业调度程序每周安排一个任务
- unity3d - 如何在 Unity 中为桌面 VR 应用逐帧显示 360 度视频?
- python - OpenCV:selectROI 返回零元组
- python - 没有名为“gspread”的模块,ModuleNotFoundError。Python中的导入问题
- google-app-maker - 将部署的发布权限授予其他用户