2014-05-07 47 views
2

因此,我正在使用Telerik報表創建服務器/客戶端概念項目驗證項目,並將ASP.NET WebAPI 2.0與HTML5報表查看器配合使用。當服務器中有.trdx文件,並且如果我只想使用獨立的報告生成器,然後將這些文件添加到項目文件夾中,這樣就可以了。如何使用HTML5報表查看器消費Telerik報表

但是我寧願能夠使用集成的visual studio報告生成器來製作報告。集成發生器的輸出當然是cs文件,但我不知道如何在客戶端上調用它們,以便HTML5查看器能夠正確解析它們。服務器上的控制器如下所示。

public class ReportsController : ReportsControllerBase 
{ 
    protected override IReportResolver CreateReportResolver() 
    { 
     var appPath = HttpContext.Current.Server.MapPath("~/"); 

     return new ReportFileResolver(appPath); 
    } 

    protected override ICache CreateCache() 
    { 
     return Telerik.Reporting.Services.Engine.CacheFactory.CreateFileCache(); 
    } 
} 

請求客戶端數據的代碼如下。

$(document).ready(function() { 
     $("#reportViewer1") 
      .telerik_ReportViewer({ 
       serviceUrl: "http://localhost:XXXXX/api/reports/", 
       templateUrl: 'ReportViewer/templates/telerikReportViewerTemplate.html', 
       reportSource: { report: "Reports/Accounting/InvoiceSubGroup/Invoice.trdx" }, 
       viewMode: telerikReportViewer.ViewModes.INTERACTIVE, 
       scaleMode: telerikReportViewer.ScaleModes.SPECIFIC, 
       scale: 1.0, 
       ready: function() { 
       }, 
      });   
    }); 

任何信息,這將使我更清楚如何改變這一點,我會很感激。

回答

4

因此,我不完全確定是否有可能使用FileReportResolver來完成此操作,但我已經或多或少地想出瞭如何在一般情況下執行此操作,並且不會破壞這種情況我在其他地方使用trdx文件。是

更改HTML頁面如下:

老,這仍然會是如何調用的報告,這將是一個trdx類型。 -

reportSource: { report: "Reports/Warehouse/Facts/Invoice.trdx" }, 

新的,這是你將如何引用通過綜合報告觀看者做出的報告 -

reportSource: { report: "TelerikRESTHost.Reports.Warehouse.Facts.People, TelerikRESTHost" }, 

的第一個參數是[報告名稱]內的命名空間.Designer .cs文件(位於頂部)以及您正在查找的特定文件。在我的情況下,報告是People.cs,名稱空間如上所示。兩者之間的區別在於它們是什麼類型的文件,舊的是.trdx文件,新的是.cs文件。第二個參數是文件居住在該項目的大會名。

重要的事情在這裏是報表源第二個參數HAS是該項目的程序集名稱,竟然是真的搞亂與我相當一段時間,因爲我通過解決方案資源管理器重命名它,但是這不會更改程序集名稱。

至於控制器進入,我有如下修改它

return new ReportFileResolver(appPath) 
      .AddFallbackResolver(new ReportTypeResolver()); 

這顯然會嘗試根據文件名第一(舊方法)來解決它,如果它不能做那麼它會嘗試將其解析爲一種類型(新方法)。

我希望這可以幫助別人避免花費時間來解決這個問題。如果任何人都可以想出一種簡單的方法來結合這些方法,以便客戶端不必知道服務器上的文件格式是什麼類型的,我會將您的答案標記爲解決方案(假設它有效),因爲那是我首先是在尋找。儘管如此,這至少是一項可以接受的工作。

+0

你所做的是如何正式的[服務](http://www.telerik。com/help/reporting/telerik-reporting-rest-implementation-http-service.html)和[client](http://www.telerik.com/help/reporting/html5-report-viewer-jquery-fn-telerik -reportviewer.html)也可以,所以沒關係。只有一條評論:程序集名稱不是報告源的第二個參數。您只傳遞一個字符串作爲報告源,並且該字符串必須是報告類的[AssemblyQualifiedName](http://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname.aspx)。 – cremor

+1

剛剛遇到了這個問題,並需要使用HTML 5查看器來做到這一點,這對我很好,謝謝你的回答/更新! –

相關問題