Passaggio parametri al report

mercoledì 24 novembre 2010 - 17.10
Tag Elenco Tags  C#  |  .NET 3.5  |  Windows Server 2003  |  Visual Studio 2008  |  SQL Server 2005

elsinore Profilo | Junior Member

Ciao a tutti,

come da oggetto avrei la necessità di passare dei parametri ad un report....è un'app web sviluppata con VS2008.....

ho creato il file rdlc.....ho creato il dataset....poi ho creato la tabella sul report..... ho trascinato i 3 campi che mi servono dal dataset alla tabella...e fin qui tutto ok.

faccio partie l'applicazione e il report appare con tutti i dati....non filtrati...

Poi sono andato nel menù parametri del report....e ho aggiunto i parametri che mi servono ....

nel code behind ho aggiunto...(nel bottone cerca)

ReportViewer1.Visible = true;

LocalReport report = this.ReportViewer1.LocalReport;
ReportParameter P1 = new ReportParameter("Data1", Data_da.Text);
ReportParameter P2 = new ReportParameter("Data2", Data_a.Text);
ReportParameter P3 = new ReportParameter("Nome", Nome.Text);


report.SetParameters(new ReportParameter[] { P1 });
report.SetParameters(new ReportParameter[] { P2 });
report.SetParameters(new ReportParameter[] { P3 });


report.Refresh();
ReportViewer1.LocalReport.Refresh();

ma non succede nulla...o meglio...il risultato che appare non è filtrato dai parametri!

mi sa che ho dimenticato qualcosa!!!
ma cosa?

-----Aggiornamento--------

Sono andarto nelel proprietà del DataSource...e nel tab Filters ho inserito il mio parametro.....
=Fields!Nome.Value Parameters!Nome.Value


compilo....e quando provo mi dice

An error has occurred during report processing.
ObjectDataSource 'ObjectDataSource1' could not find a non-generic method 'GetData' that has no parameters.



allora sono andato nell'aspx e ho modificato il metodo dell'ObjectDataSource1

da:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetData"
TypeName="DataSet1TableAdapters.V_ELENCOTableAdapter">
</asp:ObjectDataSource>

a:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetData(@Nome)"
TypeName="DataSet1TableAdapters.V_ELENCOTableAdapter">
</asp:ObjectDataSource>

ma niente...mi dice sempre

An error has occurred during report processing.
ObjectDataSource 'ObjectDataSource1' could not find a non-generic method 'GetData(@Fornitore)' that has no parameters.

help!

freeteo Profilo | Guru

Ciao,
il problema è nella datasource appunto come ti compare nel messaggio d'errore.
Hai 2 strade:
1) eviti di usare l'oggetto datasource e invece gli passi tu nel page_load i dati al report
2) imposti la chiamata corretta alla datasource, ossia se il metodo ha un parametro devi aggiungerglielo nell'insieme "selectParameters"
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetData" TypeName="DataSet1TableAdapters.V_ELENCOTableAdapter"> <SelectParameters> <asp:Parameter Name="nome" DefaultValue="valore" /> </SelectParameters> </asp:ObjectDataSource>
infatti l'objectdatasource punta ad un metodo, ossia "GetData" della classe "DataSet1TableAdapters.V_ELENCOTableAdapter", se quel metodo ha un parametro devi metterglielo anche nel markup.
Sarebbe l'equivalente di scrivere:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5