2

私は MVC3 アプリに取り組んできましたが、最近の要件は、動的に生成されたレポートがいくつかあることです。そこで、レポート ビューアーといくつかのレポート (.rdlc) を含む 1 つの webbform を追加しました。しかし、条件付きの行塗りつぶしを設定しようとすると、たとえば

=IIf(RowNumber(Nothing) Mod 2, "Blue", "Red") // Won't acctually use those colors but you get the gist

しかし、結果の背景はまだ白です。True blue Webform アプリケーションでまったく同じ Webform を試してみたところ、適切にレンダリングされました。MVC プロジェクトに Webforms testproject で使用されるすべての参照が含まれていることを確認し、.aspx と .rdlc を 'Global.asax.cs' の無視されたルートに追加しました。

なぜハイブリッドホラーなのか?
パフォーマンス上の理由により、Clientside Reporting 生成から Serverside に変更できません。また、環境 (はい複数) に帯域幅と接続が不足しているため、別の/リモート サーバーを使用することもできません。また、レポートビューア用に別のアプリ プールを追加する必要はありません (これもパフォーマンスの問題です)。

EDIT1:

Global.asax

public class MvcApplication : System.Web.HttpApplication {
    public static void RegisterGlobalFilters ( GlobalFilterCollection filters ) {
        filters.Add(new HandleErrorAttribute());
    }

    public static void RegisterRoutes ( RouteCollection routes ) {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
        routes.IgnoreRoute("{resource}.rdlc/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

    }

    protected void Application_Start () {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    }
}

レポート.aspx ....

</rsweb:ReportViewer>
<asp:XmlDataSource ID="reportsDS" runat="server" 
        DataFile="~/Reporting/ReportSettings/Reportlist.xml" 
        XPath="Reports/Report" />
<asp:ScriptManager ID="scriptmanager" runat="server" />
....

Report.aspx.cs

// Some configuration initialization and the regular Page_Init + Page_Load assigning
// default values

protected void changeReport() {
    ReportViewer.Reset();
    ReportDataSource RDS = new ReportDataSource( /* grabbed from a combination of applicationsettings and input parameters */
    ReportViewer.LocalReport./* adding datasource and setting paths, names, etc. */
}

EDIT2:私がやっていることにより良いコンテキストを与えるためにコードを追加しましたが、Webformsプロジェクトから公開されたときにコードが実際に機能することを確認しましたの。しかし、私の最善の努力にもかかわらず、私はそのブランドの魔法をまだ見つけることができませんでした.

4

1 に答える 1

1

Page_Init を変更することで問題を解決できました

protected void Page_Init( object sender, EventArgs e ) {
    ...
    ReportViewer.LocalReport.SetBasePermissionsForSandboxAppDomain(new PermissionSet(PermissionState.Unrestricted));
    ...
}

ハックのように感じるので、この回答を受け入れる前に1日か2日待ちます

于 2012-07-13T09:26:39.400 に答える