5

ReportViewerコントロールを表示するためにiframeまたは新しいページを使用するように言っている人をたくさん見ました。iframeを使用せずに、ページの残りの部分とインラインでコントロールを表示する方法はありますか?

4

1 に答える 1

8

.ascxから継承する場合は、Razorでユーザーコントロールを部分ビューとして使用できますSystem.Web.Mvc.ViewUserControl

この場合、フォルダ内にコントロールと必要条件ASCXを含むを作成できます。ReportViewerScriptManagerView\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名前付きのにアクセスできますModel。これを送信するモデルのタイプにキャストして、次を使用できます。

ReportViewParameters model = (ReportViewParameters)Model;
于 2013-03-04T18:28:03.380 に答える