【问题标题】:how to refresh ssrs report inside an mvc4 razor application without refresh whole page如何在不刷新整个页面的情况下刷新 mvc4 razor 应用程序中的 ssrs 报告
【发布时间】:2015-11-30 14:00:36
【问题描述】:

我在 MVC 4 razor 中有一个 ssrs 报告,我在其中生成有关单击的搜索参数的报告。第一次生成报告没有任何问题,但是当我单击 ssrs 报告下一页分页完成但我的搜索参数空白由于整个页面刷新。我不想刷新整个页面 ssrs 分页时间。我只想刷新 ssrs 部分。

查看页面 (index.html)。以下是我的快照:

ssrs report code:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Emenox.Models.Reports.AptekaReportModel>" %>
<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>

<script runat="server">

    protected void Page_Init(object sender, EventArgs e)
    {
        // Required for report events to be handled properly.



        Context.Handler = Page;


    }

    protected void Page_Load(object sender, System.EventArgs e)
    {
        if (IsPostBack == false)
        {

            ServerReport report = ReportViewer1.ServerReport;
            ReportParameter[] rptParameters = new ReportParameter[14];

            rptParameters[0] = new ReportParameter("CompanyId", Model.CompanyId.HasValue ? Model.CompanyId.Value.ToString() : "0", false);
            rptParameters[1] = new ReportParameter("YearId", Model.YearId.HasValue ? Model.YearId.Value.ToString() : "0", false);
            rptParameters[2] = new ReportParameter("MonthId", Model.MonthId.HasValue ? Model.MonthId.Value.ToString() : "0", false);
            rptParameters[3] = new ReportParameter("RegionId", Model.RegionId.HasValue ? Model.RegionId.Value.ToString() : "0", false);
            rptParameters[4] = new ReportParameter("RepresentativeId", Model.RepresentativeId.HasValue ? Model.RepresentativeId.Value.ToString() : "0", false);
            rptParameters[5] = new ReportParameter("ProductId", Model.ProductId.HasValue ? Model.ProductId.Value.ToString() : "0", false);
            rptParameters[6] = new ReportParameter("CompanyName", Model.CompanyName, false);
            rptParameters[7] = new ReportParameter("YearName", Model.YearName, false);
            rptParameters[8] = new ReportParameter("MonthName", Model.MonthName, false);
            rptParameters[9] = new ReportParameter("RegionName", Model.RegionName, false);
            rptParameters[10] = new ReportParameter("RepresentativeName", Model.RepresentativeName, false);
            rptParameters[11] = new ReportParameter("ProductName", Model.ProductName, false);
            rptParameters[12] = new ReportParameter("PartyName", Model.PartyName, false);
            rptParameters[13] = new ReportParameter("UserId", Model.UserId.HasValue ? Model.UserId.Value.ToString() : "0", false);
            // rptParameters[3] = new ReportParameter("ProductName",Model.ProductName, false);


            report.ReportServerCredentials = new MyReportServerCredentials();
            ReportViewer1.ProcessingMode = ProcessingMode.Remote;
            try
            {
                ReportViewer1.ServerReport.ReportServerUrl = new System.Uri(ConfigurationManager.AppSettings["ReportServerUrl"].ToString());
                ReportViewer1.ServerReport.ReportPath = ConfigurationManager.AppSettings["ReportPath"].ToString() + "/AptekaReport.rdl";
                ReportViewer1.ServerReport.SetParameters(rptParameters);
                ReportViewer1.LocalReport.Refresh();
            }
            catch { };
        }

    }

    [Serializable]
    protected class MyReportServerCredentials : IReportServerCredentials
    {

        public MyReportServerCredentials()
        {
        }

        public System.Security.Principal.WindowsIdentity ImpersonationUser
        {
            get
            {
                return null;  // Use default identity.
            }
        }

        public System.Net.ICredentials NetworkCredentials
        {
            get
            {
                return new System.Net.NetworkCredential(ConfigurationManager.AppSettings["NetworkUserName"].ToString(), ConfigurationManager.AppSettings["NetworkPassword"].ToString(), ConfigurationManager.AppSettings["NetworkDoamin"].ToString());
            }
        }

        public bool GetFormsCredentials(out System.Net.Cookie authCookie,
                out string user, out string password, out string authority)
        {
            authCookie = null;
            user = password = authority = null;
            return false;  // Not use forms credentials to authenticate.
        }
    }

</script>

<form id="Form1" runat="server">

    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="false" >

    </asp:ScriptManager>

    <rsweb:ReportViewer ID="ReportViewer1" ZoomMode="PageWidth" SizeToReportContent="True"
        runat="server" AsyncRendering="false" ShowFindControls="true" 
        ProcessingMode="Remote" ShowParameterPrompts="False" Width="100%">
        <ServerReport DisplayName="Media Expenses Report" />
    </rsweb:ReportViewer>


</form>

controller code :
 public ActionResult Index()
        {
            AptekaReportModel model = new AptekaReportModel();
            if (Session["UserId"] != null && Session["RoleName"].ToString() != null)
            {
                model.UserId = Convert.ToInt32(Session["UserId"]);
                model.RoleName = Session["RoleName"].ToString();
                model.CompanyList = CommonFunctions.GetCompanyListByUserId(model.UserId.Value, model.RoleName);                
                model.ProductList = CommonFunctions.GetProductsWithSKU();
                //model.ProductList = CommonFunctions.GetProductsByUserId(Convert.ToInt32(Session["UserId"]), Session["RoleName"].ToString());
                model.RepresentativeList = CommonFunctions.GetRepresentativeByUserId(Convert.ToInt32(Session["UserId"]), Session["RoleName"].ToString());
                model.YearList = CommonFunctions.GetYear();
                model.MonthList = CommonFunctions.GetMonth();

                model.RepresentativeTypeList = CommonFunctions.GetRepresentativeTypeList();
            }
            return View(model);
        }
        /// <summary>
        /// Search
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>


 public ActionResult Search(AptekaReportModel model)
        {
           // AptekaReportModel model = new AptekaReportModel();

        model.IsSearch = true;
        if (Session["UserId"] != null && Session["RoleName"].ToString() != null)
        {
            model.UserId = Convert.ToInt32(Session["UserId"]);
            model.RoleName = Session["RoleName"].ToString();
            model.CompanyList = CommonFunctions.GetCompanyListByUserId(model.UserId.Value, model.RoleName);

            //model.ProductList = CommonFunctions.GetProductsByUserId(Convert.ToInt32(Session["UserId"]), Session["RoleName"].ToString());
            //   model.RepresentativeTypeList = CommonFunctions.GetRepresentativeTypeList();
            // model.RepresentativeList = CommonFunctions.GetRepresentativeByUserId(Convert.ToInt32(Session["UserId"]), Session["RoleName"].ToString());                
        }
            model.YearList = CommonFunctions.GetYear();
            model.MonthList = CommonFunctions.GetMonth();
            model.ProductList = CommonFunctions.GetProductsWithSKU();

           // model.ActionStatus = true;

      //  if (Session["ProductList"] != null)
        //{
        //    model.ProductList = Session["ProductList"] as List<SelectListItem>;
        //}
        if (ModelState.IsValid)
        {
            if (model.CompanyId != null)
                model.CompanyName = CommonFunctions.GetCompanies().Where(x => x.Value == Convert.ToString(model.CompanyId)).SingleOrDefault().Text;
            if (model.YearId != null)
                model.YearName = CommonFunctions.GetYear().Where(x => x.Value == Convert.ToString(model.YearId)).SingleOrDefault().Text;
            if (model.MonthId != null)
                model.MonthName = CommonFunctions.GetMonth().Where(x => x.Value == Convert.ToString(model.MonthId)).SingleOrDefault().Text;
            //if (model.RegionId != null)
            //    model.RegionName = CommonFunctions.GetRegionList().Where(x => x.Value == Convert.ToString(model.RegionId)).FirstOrDefault().Text;
            if (model.RepresentativeId != null)
                model.RepresentativeName = CommonFunctions.GetMRs().Where(x => x.Value == Convert.ToString(model.RepresentativeId)).SingleOrDefault().Text;
            if (model.ProductId != null)
                     model.ProductName =  CommonFunctions.GetProductsWithSKU().Where(x => x.Value == Convert.ToString(model.ProductId)).SingleOrDefault().Text;
        }
        else
        {
           model.IsSearch = true;
        }
        return View("Index", model);
    }

【问题讨论】:

标签: jquery asp.net-mvc-4 razor reporting-services


【解决方案1】:
   <div id="x">

   </div>

 <script>
$(document).ready(function(){
$("#x").load("/controller/action");
});
 </script>

将 div 放在要查看报告的视图中。

【讨论】:

  • hii sarath 我的问题是,当我单击 ssrs 下一页时,在这种情况下,我的选择搜索参数会变暗。和分页过程完成。
【解决方案2】:

将报表放在 iframe 中。这会将您的视图与报告分开。因此,单击报表的分页按钮不会影响视图中显示的搜索参数。

【讨论】:

  • 嘿 Alorika 可以给我一些代码参考吗,因为我认为我的框架在 mvc4 razor 中不支持
  • 通过此链接:dotnetspeak.com/2012/02/using-ssrs-in-asp-net-mvc-application。它逐步解释了该过程。总体思路是,在要显示报告的位置创建一个 iframe,并将 aspx 页面的路径(reportviewer 所在的位置)提供到 iframe 的源中。这将在 iframe 中生成报告。
猜你喜欢
  • 2016-01-11
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-11
  • 2019-11-25
相关资源
最近更新 更多