2013-01-08 52 views
2

我在裝載到MVC單頁面應用程序的iframe中的webform中使用ReportViewer(2012,版本11)用戶控件。我發現我運行了一個報告,並且工作正常,但是我轉到另一個報告,直到刷新後纔會運行。.net ReportViewer javascript錯誤

以前的iframe內容部分已經從dom中刪除了,所以我沒有看到它會干擾下一個報告。我的猜測是報告查看器污染了全局命名空間。

在anycase誤差

TypeError: cs is null 
return cs.getPropertyValue('direction'); 

有誰知道這一點,或者如果存在的ReportViewer後清理的方式,或者有更好的ReportViewer控件?

+0

沒有幫助我害怕,但是我現在已經避免了股票報表查看器的許多問題 - 如果您使用實體和存儲庫,它會變得更糟,因爲它不支持lambdas(至少不是在2010年,上次我檢查)。祝你好運雖然 – Basic

+0

@Basic有沒有其他的選擇呢?也許有些開源的東西。不可否認的是,最終我們使用Telerik報告查看器來獲得POS – Raif

+0

。不是免費的(約600美元/用戶,我認爲),但值得在開發時節省開銷。這真是太棒了,但可能並不是你想要的。不幸的是,我還沒有找到一個體面的操作系統替代方案(但是如果你碰到一個,請告訴我) – Basic

回答

0

我的應用程序與您的應用程序類似。我正在使用jQuery將ReportViewer加載到DOM元素中(嵌入在iframe中)。與此類似

東西:

var formargs = $("#reportArgsForm").serialize(); 
var windowheight = $("#content").height() - 8; 
var link = '<iframe id="report_iframe" style="height:' + windowheight + 'px;width:99%;overflow: visible;" src="Reports/SimpleReportViewer.aspx?' + formargs + '"></iframe>'; 

$("#tabs").tabs("option", "active", 1); 
$("#tabs-display").html(link); 

如果你注意到,該報告實際上是它自己的jQuery UI的選項卡中顯示。我遇到了同樣的錯誤,因爲我已升級到jQuery-UI 1.10.1和標籤"select" method wasn't working any more

在我的情況下,錯誤深埋在Microsoft.Reporting.WebFormsClient._InternalReportViewer.GetRTLDirection內。報表查看器代碼試圖在某個元素上調用window.getComputedStyle,並返回null。它是空的,因爲傳入的元素不可見。

一旦我修復了jQuery-UI標籤切換問題,ReportViewer錯誤(「cs is null」)就消失了。