2014-03-25 30 views
0

我想從後面的代碼動態查看報告。但是,當從頁面中添加的動態文本框中更改參數時。在報告refresh()中,數據不會改變。動態報告大樓刷新()不改變數據

我在!IsPostback中調用sqlDS()和reportBuild()。

此方法是用於定義在SqlDataSource:

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

此方法是用於聲明的報告性能:

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(); 

    } 

在的ReportViewer刷新方法我嘗試根據來設置新的參數動態文本框添加在頁面中:

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(); 

    } 

我tr ied調試,發現每一件事情都正常工作,SQL參數改變了,報表參數也隨之改變。

那麼爲什麼報告中的數據沒有改變? PLZ幫我

回答