In one of my projects I am doing it like this :
public ReportForm(RapportType kind)
{
InitializeComponent();
switch (kind)
{
case RapportType.VoorschotRapport: this.crystalReportViewer.ReportSource = this.crVoorschotReport1; break;
case RapportType.FactuurRapport: this.crystalReportViewer.ReportSource = this.crFactuurReport1; break;
case RapportType.KlussenRapport: this.crystalReportViewer.ReportSource = this.crKlussenReport1; break;
case RapportType.FactuurOpstellingsRapport: this.crystalReportViewer.ReportSource = this.crFactuurOpstellingsReport1; break;
case RapportType.ServiceAanvragenRapport: this.crystalReportViewer.ReportSource = this.crServiceAanvragenReport1; break;
case RapportType.UitvoerbareKlussenRapport: this.crystalReportViewer.ReportSource = this.crUitvoerbareKlussenReport1; break;
case RapportType.DringendeDossiersRapport: this.crystalReportViewer.ReportSource = this.crDringendeDossiersReport1; break;
case RapportType.AfwerkingsRapport: this.crystalReportViewer.ReportSource = this.crAfwerkingsReport1; break;
case RapportType.RetourRapport: this.crystalReportViewer.ReportSource = this.crRetourReport1; break;
}
}
public ReportForm(RapportType kind, string filter, string filter2, string instance)
: this(kind)
{
this.filiaalFilter = filter;
this.dossierBeheerderFilter = filter2;
this.Instance = instance;
CrystalDecisions.Shared.ParameterField filiaalField = crystalReportViewer.ParameterFieldInfo["InputFiliaal"];
CrystalDecisions.Shared.ParameterField dossierBeheerderField = crystalReportViewer.ParameterFieldInfo["DossierBeheerder"];
CrystalDecisions.Shared.ParameterField instanceField = crystalReportViewer.ParameterFieldInfo["Instance"];
CrystalDecisions.Shared.ParameterDiscreteValue value = new CrystalDecisions.Shared.ParameterDiscreteValue();
if (filiaalFilter.Contains(","))
{
string[] filters = filiaalFilter.Split(',');
foreach (string f in filters)
{
filiaalField.CurrentValues.AddValue(f);
}
}
else filiaalField.CurrentValues.AddValue(filiaalFilter);
dossierBeheerderField.CurrentValues.AddValue(dossierBeheerderFilter);
instanceField.CurrentValues.AddValue(Instance);
crystalReportViewer.Refresh();
}
So first set the reportsource.
Then you get the different CrystalDecisions.Shared.ParameterFields and assign a value to them.
refresh the report. It works for me.