Qui ci sono alcuni frammenti del mio codice.
Non so se bastano, casomai fammi sapere se ti serve qualcos'altro.
Questa è la parte in cui viene visualizzato il report:
......
if (toReport is IReportableMod)
{
this.initializeReport(rrc);
}
if (toReport is IReportableParam)
{
//se il report utilizza dei parametri imposta i valori
this.setParameters(rrc);
}
...
rrc.SetDataSource(ds);
this.crystalReportViewer1.ReportSource = rrc;
this.crystalReportViewer1.Show();
}
....
e questa è la funzione setParameters:
private void setParameters(ReportClass rc)
{
IReportableParam rp = (this.toReport as IReportableParam);
if (rp.Parameters != null)
{
//rp.Parameters contiene delle coppie nome - valore impostate in precedenza
foreach(Pair reppar in rp.Parameters)
{
rc.SetParameterValue((string)reppar.first, reppar.second);
}
}
}
aggiungo due cose che potrebbero servire:
1 - Cercando fra i thread ho trovato qualcun altro che aveva lo stesso problema:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=8438
(mi scuso di non averlo fatto prima, ma con firefox la ricerca non funziona e credevo che non ci fossero discussioni sull'argomento).
Ho già provato a seguire quel consiglio, ma purtroppo non risolve il problema.
2 - Ho notato che la classe ParameterFieldDefinition ha una proprietà ParameterFieldUsage (che purtroppo è read only) e che può valere: InUse, NotInUse e CurrentValuesProvidedByServer.
Così a occhio mi farebbe comodo se i miei parametri avessero ParameterFieldUsage = CurrentValuesProvidedByServer (invece sono tutti InUse)
Ma nel caso, come si fa ad impostarli in questo modo? Va fatto in fase di design del report?
Grazie per l'aiuto
--
BG