我见过很多人说要使用 iframe 或新页面来显示 ReportViewer 控件。有没有办法在不使用 iframe 的情况下将控件与我的页面的其余部分内联显示?
问问题
12593 次
1 回答
8
如果.ascx
用户控件从System.Web.Mvc.ViewUserControl
.
在这种情况下,您可以在文件夹中创建一个ASCX
包含您的ReportViewer
控件和必需项ScriptManager
的View\Controller
文件:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ReportViewerControl.ascx.cs" Inherits="MyApp.Views.Reports.ReportViewerControl" %>
<%@ Register TagPrefix="rsweb" Namespace="Microsoft.Reporting.WebForms" Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="scriptManager" runat="server" EnablePartialRendering="false" />
<rsweb:ReportViewer Width="100%" Height="100%" ID="reportViewer" runat="server" AsyncRendering="false" ProcessingMode="Remote">
<ServerReport />
</rsweb:ReportViewer>
</div>
</form>
在代码隐藏中,确保在Page_Init
;中包含以下内容 否则,您将无法在报告视图中使用任何选项:
protected void Page_Init(object sender, EventArgs e)
{
// Required for report events to be handled properly.
Context.Handler = Page;
}
您还想确保您的控件继承自System.Web.Mvc.ViewUserControl
:
public partial class ReportViewerControl : ViewUserControl
要使用此控件,您可以在 Razor 页面中执行以下操作:
@Html.Partial("ReportViewerControl", Model)
Page_Load
然后,您可以像往常一样在控件中设置 ReportViewer 。您将可以访问object
named Model
,您可以将其转换为您发送的模型类型,然后使用:
ReportViewParameters model = (ReportViewParameters)Model;
于 2013-03-04T18:28:03.380 回答