原因可能有三個:
1、ReportService版本太低,所以可以升級Sql Server 2008 R2 SP2. 2、主版頁面中的ScriptManager的屬性加上ScriptMode="Release" 3、在網站的web.config中將設定為<compilation batch="false" debug="false" optimizeCompilations="true">,其主要原因是debug為true的時候會出現這個錯誤。 其中第1、2個可能都不是主要原因,但我在測試的時候由於已經安裝了SP2,所以也不可能把它卸載後再去測試,估且這樣認為吧。 另外附上控制ReportViewerWebPart過濾參數以及控制縮放的方法: 在頁面的後台代碼中加入(或者直接寫到aspx檔案中):
protected override void OnLoad(EventArgs e) { if (!this.IsPostBack) { ReportViewerWebPart viewer = FindMainWebpart<ReportViewerWebPart>(); if (viewer != null) { viewer.OverrideParameters.Clear(); viewer.OverrideParameters.Add(new Microsoft.Reporting.WebForms.ReportParameter("aa", "13,14", false));
ReportViewer rptViewer = ReflectorUtils.getField<ReportViewer>("m_reportViewer", viewer);
rptViewer.ZoomMode = ZoomMode.PageWidth;
} } base.OnLoad(e); } /// <summary> /// 找到頁面的Webpart /// </summary> /// <param name="webPartZoneId">WebpartZone的Id</param> /// <returns></returns> protected T FindWebpart<T>(string webPartZoneId) where T : Microsoft.SharePoint.WebPartPages.WebPart { #region 已注釋:通過Master找特定WebPartZone的控制項 //1.此種方式只能擷取指定地區的Webpart //ContentPlaceHolder holder =(ContentPlaceHolder)Master.FindControl("PlaceHolderMain"); //if (holder != null) //{ // WebPartZone zone = (WebPartZone)holder.FindControl("Main"); // foreach (WebPart control in zone.WebParts) // { // if (control is XsltListViewWebPart) // { // } // } //} #endregion T result = default(T); SPWebPartManager sPWebPartManager = SPWebPartManagerInPage; if ((sPWebPartManager.Zones != null) && (sPWebPartManager.Zones.Count > 0)) { foreach (Microsoft.SharePoint.WebPartPages.WebPartZone zone in sPWebPartManager.Zones) { if (zone.ID == webPartZoneId) { foreach (Microsoft.SharePoint.WebPartPages.WebPart webpart in zone.WebParts) { if (webpart is T) { result = (T)webpart; break; } } } if (result != null) { break; } } } return result; } /// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> protected T FindMainWebpart<T>() where T : Microsoft.SharePoint.WebPartPages.WebPart { return FindWebpart<T>("Main"); }