簡體   English   中英

VS 2008報表控件中來自SQL報表服務的報表查看器

[英]Report viewer from SQL reporting services in VS 2008 report control

VS 2008報表控件中來自SQL報表服務的報表查看器如果我在VS 2008中創建新報表,則它們的擴展名為.rdlc並可以正常工作。

我有一些在SQL報表服務中使用的報表。 擴展名為.rdl,並希望使其與VS 2008一起使用。

我將rdl文件和.rdl.data文件復制到VS 2008(SP1)項目中,但是當我在控件中選擇報表時,它看不到該文件(我假設它正在尋找.rdlc文件)

我嘗試將文件重命名為.rdlc並加載文件並得到

報表定義具有無效的目標名稱空間“ http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition ”,該名稱空間無法升級。

我看到了這個http://social.msdn.microsoft.com/Forums/en-SG/vsreportcontrols/thread/65cefd7d-00d8-4be6-a53a-7e34dfd7eb2b

我在這里看到http://www.gotreportviewer.com/它說:“ RDL文件與ReportViewer控件運行時完全兼容。但是,RDL文件不包含一些信息,ReportViewer控件的設計時需要這些信息來自動生成數據綁定代碼。通過手動綁定數據,可以在ReportViewer控件中使用RDL文件。”

但是有關如何手動綁定數據的鏈接已損壞。

關於如何手動重新綁定數據的任何想法? 還是讓這些報告與2008控件一起使用的更好方法?

不幸的是,SSRS 2008中的服務器版本* .rdl與本地版本* .rdlc文件兼容。

基本上,您所能做的就是

  • 要么直接在服務器上使用.RDL(使用ReportViewer控件中的“遠程呈現”報告)

  • 基本上從頭開始將整個報告重新創建為本地報告

這真是令人難以置信-但不幸的是,這是事實.....讓我們希望使用.NET 4,Visual Studio 2010會更好。

如果您不需要向下鑽取之類的高級功能,並且不能使用VS2010,則可以這樣做(我可以這樣做):

  • 從VS2010安裝新的reportviewer.exe(我猜是beta2或更高版本);
  • 將版本10.0的ReportViewer的Common / WebForms程序集添加到引用中;
  • 手動解析RDL XML結構以獲取數據源和/或查詢SQL(非常容易);
  • 使用它來填充LocalReport.DataSource;
  • 執行LocalReport.Render(“ PDF”)以獲得PDF輸出(用於生成PDF響應的ActionResult代碼很容易找到);
  • 在頁面和iframe上放置一個“查看”按鈕;
  • “查看”按鈕(通過JavaScript)會將iframe src屬性分配給返回上述PDF內容的網址-並將在iframe中為報告提供漂亮的PDF預覽;
  • 或者,可以使用jQuery Media插件呈現具有相同結果的PDF對象標簽;
  • 另外,我解析RDL XML參數並將其顯示在頁面上,並將其傳遞給“生成報告” URL-我得到了自己的漂亮UI控件,以獲取好處。
  • 此外,我還有自己的“導出”按鈕,它們調用LocalReport.Render(format)並提供具有正確MIME類型(即Excel,Word,PDF和我的手動CSV)的輸出-導出在新版本的報表查看器中得到了改進。

上面的列表可能看起來很嚇人,但是我花了僅2天的時間就在ASP.NET MVC中破解了完整的解決方案,而且只有大約300行代碼,包括我自己的CSV代。

一旦從XML查詢獲得DataTable / DataSet,綁定數據的代碼就非常簡單:

        var reportDataSource = new ReportDataSource();
        reportDataSource.Name = name;
        reportDataSource.Value = ds.Tables[0];
        localreport.DataSources.Add(reportDataSource);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM