0

rdlファイルを呼び出して既存のasp.netアプリケーションにロードする手順を理解しようとしています。rdlファイルをssrsサーバーにアップロードし、レポートの取得とフィルタリングにssrsエンドポイント(sql2008r2)を利用するカスタムUIを開発しています。私がいくつかのガイダンスを探しているのは、レポートをロードするためにレポートに正確に何を提供する必要があるかについてです。最初はローカル処理を使用することから始めましたが、読んだ内容と環境要件に基づいて、レポートを生成するためにレポート処理を使用する必要があります。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();
}

現在、これを実行すると、コントロールはページ上に何もレンダリングまたは表示しません。

LocalReportの代わりにServerReportを使用する必要があることはわかっていますが、レポートを取得してレンダリングするために、すべてがメソッドの一部である必要があるかどうかがわかりません。データソースは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 に答える