我正在处理的 ASP.NET 站点有一些 SSRS 报告作为页面。对于这些页面中的每一个(但不是其他任何页面),母版页的 RadMenu 下拉菜单都不起作用,这似乎是因为报告视图页面正在通过 Page_Init 事件的脚本管理器禁用部分呈现。
不幸的是,原来的开发者已经不在了,而且这里似乎没有人确切知道为什么部分渲染被禁用了。如果我确实启用了部分渲染,似乎什么都不会破坏,但考虑到选择似乎是多么刻意,这似乎是一个不好的理由。
这是 Page_Init 事件的代码:
protected void Page_Init(object sender, EventArgs e)
{
ScriptManager sm = ScriptManager.GetCurrent(this);
if (sm != null)
{
sm.EnablePartialRendering = false;
}
}
RadMenu 在我的母版页上,如下所示:
<telerik:RadMenu ID="MasterPageMenu" runat="server" Height="20px" Style="top: 0px;
left: 0px;" Width="100%" CssClass="RadMenuLevel" EnableRoundedCorners="True"
OnItemDataBound="MasterPageMenu_ItemDataBound" OnClientItemClicking="onClicking"
DataTextField="title" DataNavigateUrlField="url">
<DefaultGroupSettings OffsetX="11" OffsetY="2" />
</telerik:RadMenu>
所有的报告都使用一个 ReportViewer.aspx 页面来加载,下面是代码:
<%@ Page Title="Reports" Language="C#" MasterPageFile="~/HPTS.Master" AutoEventWireup="true"
CodeBehind="ReportViewer.aspx.cs" Inherits="HPTS.HPTSAdmin.ReportViewer" %>
<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<style type="text/css">
.heightTest
{
height: auto;
}
.fullheight
{
margin-bottom: 120px;
}
#testdiv
{
display:table;
width:1250px;
height:auto;
}
</style>
<script language="JavaScript" type="text/JavaScript">
window.onload=function resize(){
var viewer = document.getElementById("testdiv");
var htmlheight = document.documentElement.clientHeight;
viewer.style.height = (htmlheight - 120) + "px";
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="cphHPTS" runat="server">
<telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxyforReports" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="ReportViewerControl">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="ReportViewerControl" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManagerProxy>
<div id="testdiv" style="width: 100%">
<br />
<rsweb:ReportViewer ID="ReportViewerControl" runat="server" Font- Names="Verdana"
Font-Size="8pt" ProcessingMode="Remote" CssClass="fullheight" Height="8.5in"
Width="100%" SizeToReportContent="true">
<ServerReport ReportPath="" ReportServerUrl="" />
</rsweb:ReportViewer>
</div>
</asp:Content>