2012-04-24 76 views
0

我的頁面上有一個下拉列表,一個標籤和一個CR查看器。當我從DD選擇報告時,我更新標籤以顯示當前選定的報告,並更新CRV以顯示報告。如何在回發後製作Crystal Report Viewer顯示報告

標籤更新正常,我只是把它放在那裏作爲一個測試,以確保其他控件進行了適當的更新。另一方面,CRV始終是一個要求。我選擇了一份報告,但沒有顯示出來。我選擇另一份報告,然後顯示出我之前選擇的報告。

下面的代碼貼得從之前我加了標籤,但沒有別的改變。

using System; 
using DataAccess; 
using CrystalDecisions.CrystalReports.Engine; 

namespace Reporting 
{ 
    public partial class CRViewer : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (IsPostBack) return; 
      ReportDropDown.Items.Add("Select a report"); 

      var reports = Data.ExecutSql("select * from ngmasterdb..reports"); 
      while (reports.Read()) ReportDropDown.Items.Add(reports["Name"].ToString()); 
      reports.Close(); 
     } 

     protected void ReportDropDown_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      var reportInfo = Data.ExecutSql("select * from ngmasterdb..reports where Name = '" + ReportDropDown.SelectedValue.Replace("'", "''") + "'"); 

      try 
      { 
       ReportDocument rptdoc = new ReportDocument(); 

       if (!reportInfo.Read()) return; 
       var file = reportInfo["ReportFile"].ToString(); 
       if (file == null || file.Trim() == "") return; 

       ReportSource.Report.FileName = file; 
       CrystalReportViewer1.RefreshReport(); 
      } 
      finally 
      { 
       reportInfo.Close(); 
      } 
     } 
    } 
} 

我相信在aspx中唯一感興趣的是AutoPostBack設置爲DropDown控件的true。如果你仍然希望看到aspx,但讓我知道,我會發布它。

+1

你應該向我們展示你的SelectedIndexChanged事件處理程序。何時,何地以及如何綁定DropDownList? – 2012-04-24 20:56:10

+0

@TimSchmelter,從他看起來像他正在使用的問題 – Habib 2012-04-24 20:57:21

+1

@ Habib.OSU:他正在使用什麼?我沒有說他應該處理SelectedIndexChanged事件。我已經說過他應該向我們展示這個處理程序,以便我們可以看到發生了什麼問題。 – 2012-04-24 20:58:46

回答

0

本來我基本上是這樣:

ReportSource.Report.FileName = rptFileName; 
CrystalReportViewer1.ReportSource = ReportSource; 

當我擺脫ReportSource(一CrystalDecisions.Web.CrystalReportSource對象,)的,這樣做,而不是:

CrystalReportViewer1.ReportSource = rptFileName; 

然後就開始正常運作。我之前曾嘗試過這種方法(或者至少我確信自己做過了,儘管現在看起來似乎......)但是在文件路徑方面出現了一些錯誤。

我不知道爲什麼我得到了我,當我試圖在此之前做了錯誤,我仍然不知道爲什麼控制不正確的行爲即使使用方法我試圖所以如果任何人有任何信息在那裏隨時爲我提供線索。