2015-11-30 34 views
0

我在MVC 4剃鬚刀裏有一個ssrs報告,我在那裏生成關於搜索參數點擊的報告。第一次生成報告沒有任何問題,但當我點擊ssrs報告下一頁分頁完成,但由於整個頁面刷新我的搜索參數空白。我不想刷新整個頁面ssrs分頁時間。我只想刷新ssrs部分。如何在mvc4剃鬚刀應用程序內刷新ssrs報告而不刷新整個頁面

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

Snapshot

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); 
    } 
+0

此鏈接將幫助你http://www.codemag.com/article/1009061 –

回答

0
<div id="x"> 

    </div> 

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

放置在您要查看的報表視圖的股利。

+0

hii sarath我的問題是當我點擊ssrs下一頁時,我的選擇搜索參數將在這種情況下變成bleank。並完成分頁過程。 –

0

將報告置於iframe中。這會將您的觀點與報告分開。因此,點擊報告的分頁按鈕不會影響視圖中的搜索參數。

+0

嘿Alorika你可以給我一些代碼參考,因爲我認爲我的幀不支持在mvc4剃鬚刀 –

+0

通過此鏈接:http://dotnetspeak.com/2012/02/using-ssrs-in-asp-net-mvc - 應用。它逐步解釋了這個過程。對於一般想法,請在要顯示報告的位置創建一個iframe,並將aspx頁面(reportviewer所在的位置)的路徑提供給iframe的源代碼。這將在iframe中生成報告。 –

相關問題