0

我正在尝试找出将 rdl 文件调用/加载到现有 asp.net 应用程序中的步骤。我已将 rdl 文件上传到 ssrs 服务器,并且正在开发一个自定义 ui,它利用 ssrs 端点 (sql2008r2) 来检索和过滤报告。我在哪里寻找一些指导是关于加载报告需要提供什么?最初,我开始尝试使用本地处理,但根据我所阅读的内容以及我需要使用报告处理来生成报告的环境要求。在 aspx 文件中,我添加了报告查看器:

<asp:UpdatePanel ID="ReportViewPanel"  runat="server" UpdateMode="Conditional">
  <ContentTemplate>
     <rsweb:ReportViewer ID="MyReportViewer" runat="server">
         </rsweb:ReportViewer>
  </ContentTemplate>
</asp:UpdatePanel>

在单击链接后的代码中,我尝试按如下方式加载报告:

//code that creates the report link buttons based on what is returned from endpoint    
protected void RenderReportLinks(System.Web.UI.WebControls.Panel p, List<ReportItems> items)
{
   p.Controls.Add(new LiteralControl("<ul class='HorizontalList'>"));
   foreach (var r in items)
   {
     p.Controls.Add(new LiteralControl("<li>"));
     LinkButton lb = new LinkButton();
     lb.Text = FormatReportNames(r.Name);
     lb.ToolTip = GenerateReportDescription(r);
     lb.CommandArgument = r.Path; //path on ssrs server /<servername>/folder/reportname
     lb.Click += new EventHandler(ReportLink_Click);
     p.Controls.Add(lb);
     p.Controls.Add(new LiteralControl("</li>"));
   }
     p.Controls.Add(new LiteralControl("</ul>"));
}

void ReportLink_Click(object sender, EventArgs e)
{
  LinkButton rpt = (LinkButton)sender;
  MyReportViewer.LocalReport.ReportPath = rpt.CommandArgument + ".rdl";
   ReportViewPanel.Update();
}

目前,当我运行此控件时,该控件不会在页面上呈现或显示任何内容。

我知道我需要使用 ServerReport 而不是 LocalReport,但我不清楚的是所有需要成为检索和呈现报告的方法的一部分。数据源是 rdl 定义的一部分,还是我也需要引用/加载它?(不,我没有创建我刚刚负责加载它们的报告)。SSRS 服务器与 Web 客户端位于不同的服务器上,我需要为此考虑什么吗?最后每个报告都有参数我必须传递这些参数还是可以提示用户?

通过代码加载报表时,首先收集所有参数(登录、报表参数、数据源),然后将其作为对象传递给报表,该对象返回给查看者一个带有结果的报表。或者它是否可以在加载报告的地方(空白)然后用户与之交互,就像用户从报告管理页面单击报告标题一样?

我真的很感谢任何建议或参考在此先感谢 - 干杯

4

1 回答 1

1

我可以看到您的报告数据来源丢失了。无论是来自服务器还是本地,您都需要提供它们

 DataTable dtOrders = GetProducts();
 DataTable dtProducts = GetOrders();

 ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("dsOrdersInRDL", dtOrders));
 ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("dsProductsInRDL", dtProducts));

而且,您需要提供参数值

 ReportViewer1.LocalReport.SetParameters(new Microsoft.Reporting.WebForms.ReportParameter("ParameterName", Request.QueryString["OrderID"]));

希望这些对你有用。

于 2013-01-26T17:07:43.340 回答