2014-03-25 3 views
0

코드 뒤에서 동적으로 보고서를 보려고합니다. 그러나 매개 변수가 페이지에 추가 된 동적 텍스트 상자에서 변경 될 때. 보고서 refresh()에서 데이터는 변경되지 않습니다.동적 보고서 작성 Refresh()가 데이터를 변경하지 않습니다.

! IsPostback에서 sqlDS() 및 reportBuild()를 호출합니다. 내가에 따라 새로운 매개 변수를 설정하려고의 ReportViewer 새로 고침 방법

protected void reportBuild() 
    { 
     Reporting rep2 = new Reporting(); 
     rep2 = rep2.searchReport(repID_HF.Value); 

     ReportViewer1.LocalReport.ReportPath = "Reports/RDLC/" + rep2.RdlcFile; 
     this.ReportViewer1.LocalReport.ReportEmbeddedResource = rep2.RdlcFile; 

     ReportParameter[] paramss = new ReportParameter[SqlDataSource1.SelectParameters.Count]; 

     for (int i = 0; i < SqlDataSource1.SelectParameters.Count; i++) 
     { 
      paramss[i] = new ReportParameter(SqlDataSource1.SelectParameters[i].Name.Split(':')[1], SqlDataSource1.SelectParameters[i].DefaultValue); 
     } 
      ReportDataSource rds = new ReportDataSource(rep2.DatasetName.Split('.')[0], SqlDataSource1); 
      ReportViewer1.LocalReport.DataSources.Clear(); 
      ReportViewer1.LocalReport.DataSources.Add(rds); 

     //paramss[0] = new ReportParameter("TDATE", SqlDataSource1.SelectParameters[0].DefaultValue); 
     //paramss[1] = new ReportParameter("CUST_NUM", SqlDataSource1.SelectParameters[1].DefaultValue); 
     ReportViewer1.LocalReport.SetParameters(paramss); 

     ReportViewer1.LocalReport.Refresh(); 

    } 

:

protected void sqlDS() 
    { 
     string conString, prName = ""; 
     int counter = 0; 
     Reporting rep = new Reporting(); 
     rep = rep.searchReport(repID_HF.Value); 

     Reporting repFold = new Reporting(); 
     repFold = repFold.searchFolder(foldID_HF.Value); 

     if (repFold.FolderName.Split('(')[1] == "Web Reports)") 
     { 
      conString = dbSql.connectionStringAll; 
      prName = dbSql.providerName; 
     } 
     else 
     { 
      conString = db.connectionStringAll; 
      prName = db.providerName; 
     } 
     SqlDataSource1.ConnectionString = conString; 
     SqlDataSource1.ProviderName = prName; 

     string sqlString = System.IO.File.ReadAllText(Server.MapPath("~/Reports/SQLs/" + rep.SqlFile)); 
     sqlString.Replace(System.Environment.NewLine, " "); 


     SqlDataSource1.SelectCommand = sqlString; 

     SqlDataSource1.CancelSelectOnNullParameter = false; 

     Reporting repParam = new Reporting(); 

     allPs = repParam.getAllParamRep(rep.RepID); 


     foreach (Reporting itemParam in allPs) 
     { 
      if (itemParam.ParamType == "Date") 
      { 
       SqlDataSource1.SelectParameters.Add(":" + itemParam.ParamName, itemParam.ParamDefaultValue); 
       counter++; 
      } 
      else if (itemParam.ParamType == "Text") 
      { 
       SqlDataSource1.SelectParameters.Add(":" + itemParam.ParamName, itemParam.ParamDefaultValue); 
       counter++; 
      } 
      else if (itemParam.ParamType == "Menu") 
      { 
       counter++; 
      } 
     } 
    } 

이 방법은 보고서 속성을 선언하는 것입니다 :

이 방법의 SqlDataSource를 정의하는 것입니다 동적 텍스트 상자가 페이지에 추가되었습니다.

protected void ReportViewer1_ReportRefresh(object sender, System.ComponentModel.CancelEventArgs e) 
    { 
     foreach (Control txt in Panel1.Controls) 
     { 
      if (txt is TextBox) 
      { 
       txts.Add(txt); 
      } 
     } 

     foreach (TextBox txtbox in txts) 
     { 

      Reporting repP = new Reporting(); 
      repP = repP.searchParam(txtbox.Attributes["pID"].ToString()); 
      if (repP.ParamType == "Date") 
      { 
       SqlDataSource1.SelectParameters[":" + repP.ParamName].DefaultValue = txtbox.Text; 
      } 
      else if (repP.ParamType == "Text") 
      { 
       SqlDataSource1.SelectParameters[":" + repP.ParamName].DefaultValue = txtbox.Text; 
      } 
     } 

     //Reporting r = new Reporting(); 
     //r = r.searchReport(repID_HF.Value); 


     //Reporting rep = new Reporting(); 
     //rep = rep.searchReport(repID_HF.Value); 

     //ReportDataSource rds = new ReportDataSource(rep.DatasetName.Split('.')[0], SqlDataSource1); 
     //this.ReportViewer1.Reset(); 
     //ReportViewer1.LocalReport.DataSources.Clear(); 
     //ReportViewer1.LocalReport.DataSources.Add(rds); 

     ReportParameterInfoCollection x = ReportViewer1.LocalReport.GetParameters(); 
     //Response.Redirect(Request.RawUrl); 
     ReportViewer1.LocalReport.Refresh(); 

    } 

디버깅을 시도하고 모든 것이 올바르게 작동하고 SQL 매개 변수가 변경되었다는 것을 알게되면 보고서 매개 변수도 변경됩니다.

그래서 보고서의 데이터가 변경되지 않은 이유는 무엇입니까? Plz은 나에게

답변