如何使用剃刀ReportViewer控件?(How can I use a ReportViewer

2019-08-17 07:16发布

我见过很多人说要使用iframe或一个新的页面来显示ReportViewer控件。 有没有显示我的页面的其余部分的控制内联而不使用iframe的方法吗?

Answer 1:

您可以使用.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

要使用此控件,你会做这样的事情在你的剃须刀页:

@Html.Partial("ReportViewerControl", Model)

然后,您可以设置您在的ReportViewer Page_Load控制像往常一样的。 您将有机会获得一个object命名Model ,它可以转换为您在发送,然后使用模型的类型:

ReportViewParameters model = (ReportViewParameters)Model;


文章来源: How can I use a ReportViewer control with Razor?