J'ai écrit un programme C# en utilisant VS 2008 qui utilise la visionneuse de rapports intégrée et traite les rapports localement.Actualiser et actualiser la visionneuse de rapports basée sur le nouveau fichier RDLC
Lorsque le rapport est en cours d'affichage, je souhaite remplacer le fichier rdlc actuel par un nouveau et actualiser le rapport sans fermer le formulaire de rapport qui contient le visualiseur de rapports.
J'ai déjà vérifié pour m'assurer que le fichier est généré correctement. Si je ferme le formulaire avec la visionneuse de rapports et l'ouvre en arrière, les informations sur le nouveau fichier s'affichent. Je ne peux pas comprendre comment recharger le visualiseur de rapports sans fermer le formulaire parent.
Voici ce que j'ai déjà essayé. Je reçois aucun message d'erreur. Le rapport semble se rafraîchir, mais cela me montre vraiment ce que je regardais déjà. Le nouveau fichier RDLC n'est pas chargé.
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);
}
}
Cela a fonctionné très bien. Merci beaucoup pour l'aide. Très apprécié. Je viens d'ajouter: this.ReportViewer.Reset(); après mon code "générer un nouveau fichier" et avant mon code de connexion SQL. C'était parfait merci. J –
J'ai eu le même problème pour les rapports à distance. Cette réponse est toujours appliquée. Merci! – LOAS