Ho scritto un programma C# utilizzando VS 2008 che utilizza il Report Viewer incorporato ed elabora i report localmente.Ricarica e aggiorna il visualizzatore di report in base al nuovo file RDLC
Durante la visualizzazione del report, desidero sostituire il file rdlc corrente con uno nuovo e aggiornare il report senza chiudere il modulo del report che contiene il visualizzatore di report.
Ho già verificato che il file sia stato generato correttamente. Se chiudo il modulo con il visualizzatore di report e lo apro, eseguo il backup delle nuove informazioni sui file. Non riesco proprio a capire come ricaricare il visualizzatore di report senza chiudere il modulo principale.
Di seguito è quello che ho provato già. Non ricevo messaggi di errore. Il rapporto sembra rinfrescarsi, ma in realtà mi mostra solo quello che stavo già guardando. Il nuovo file RDLC non è caricato.
private void BtnRefreshRpt_Click(object sender, EventArgs e)
{
try
{
GenerateNewRDLC GN = new GenerateNewRDLC();
GN.generateFile(); /*this part definitely works*/
SqlConnection conReport = new SqlConnection (ConfigurationManager.ConnectionStrings["Connection String Info"].ConnectionString);
SqlCommand cmdReport = new SqlCommand();
SqlDataReader drReport;
DataSet dsReport = new AdvEdgeDataSet();
conReport.Open();
cmdReport.CommandType = CommandType.Text;
cmdReport.Connection = conReport;
cmdReport.CommandText = strRptCriteria;
drReport = cmdReport.ExecuteReader();
dsReport.Tables[0].Load(drReport);
drReport.Close();
conReport.Close();
reportViewer1.LocalReport.ReportPath = strRptResource.ToString();
ReportDataSource rds = new ReportDataSource();
rds.Name = strRptDataSource;
rds.Value = dsReport.Tables[0];
reportViewer1.LocalReport.DataSources.Add(rds);
reportViewer1.RefreshReport();
reportViewer1.SetDisplayMode(DisplayMode.PrintLayout);
//this.reportViewer1.RefreshReport();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Questo ha funzionato alla grande. Grazie mille per l'aiuto. Davvero apprezzato. Ho appena aggiunto: this.ReportViewer.Reset(); dopo il mio codice "genera nuovo file" e prima del mio codice di connessione sql. Questo è stato perfetto grazie. J –
Ho avuto lo stesso problema per i report remoti. Questa risposta è ancora valida. Grazie! – LOAS