Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要通过c将rdl加载到asp.net项目中,方法调用中需要做什么#_Asp.net_Reporting Services_Reportviewer - Fatal编程技术网

要通过c将rdl加载到asp.net项目中,方法调用中需要做什么#

要通过c将rdl加载到asp.net项目中,方法调用中需要做什么#,asp.net,reporting-services,reportviewer,Asp.net,Reporting Services,Reportviewer,我试图找出将rdl文件调用/加载到现有asp.net应用程序中的步骤。我将rdl文件上载到ssrs服务器,并正在开发一个自定义ui,该ui利用ssrs端点(sql2008r2)来检索和过滤报告。 我想了解的是,在加载报告时,究竟需要向报告提供哪些指导? 最初,我尝试使用本地处理,但基于我所阅读的内容以及环境要求,我需要使用报表处理来生成报表。 在aspx文件中,我添加了报告查看器: <asp:UpdatePanel ID="ReportViewPanel" runat="server"

我试图找出将rdl文件调用/加载到现有asp.net应用程序中的步骤。我将rdl文件上载到ssrs服务器,并正在开发一个自定义ui,该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();
}
//基于从端点返回的内容创建报告链接按钮的代码
受保护的无效RenderReportLinks(System.Web.UI.WebControl.Panel p,列表项)
{
p、 添加(新的LiteralControl(“
    ”); foreach(项目中的风险值r) { p、 控件。添加(新的LiteralControl(“
  • ”); LinkButton lb=新的LinkButton(); lb.Text=FormatReportNames(r.Name); lb.ToolTip=GenerateReportDescription(r); lb.CommandArgument=r.Path;//ssrs服务器上的路径//文件夹/reportname lb.Click+=新建事件处理程序(ReportLink\u Click); p、 控件。添加(lb); p、 控件。添加(新的LiteralControl(“
  • ”); } p、 控件。添加(新的LiteralControl(“
”); } void ReportLink\u单击(对象发送者,事件参数e) { LinkButton rpt=(LinkButton)发送方; MyReportViewer.LocalReport.ReportPath=rpt.CommandArgument+“.rdl”; ReportViewPanel.Update(); }
当前,当我运行此控件时,该控件不会在页面上呈现或显示任何内容

我知道我需要使用ServerReport而不是LocalReport,但我不清楚的是,检索和呈现报告的方法需要包含哪些内容。数据源是rdl定义的一部分,还是我也需要引用/加载它?(不,我没有创建报告,我刚刚接到加载报告的任务)。SSR服务器与Web客户端的服务器不同,有什么需要考虑的吗?最后,每个报告都有参数,我需要传递这些参数吗,还是可以提示用户

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

如果有任何建议或参考,我将不胜感激 提前谢谢
-干杯

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

 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"]));

希望这些对您有用。

因此,在我们的报表服务器上,我们还上传了数据源,因为这些报表的查询非常复杂。您正在创建内存中的DT,然后将其作为源进行传递,对吗?是否可以参考为初始报告创建的现有数据源?