TRASFERIRE UN DATATABLE CON UN WEBSERVICE

giovedì 06 settembre 2007 - 14.43

deganolu Profilo | Newbie

sto provando a popolare una gridview utilizzando un web service, ecco l'errore che mi viene fuori:

Il tipo dell'origine dati non è valido. Deve essere IListSource, IEnumerable o IDataSource.


Il webservice dovrebbe restituirmi un datatable

grazie

alx_81 Profilo | Guru

>sto provando a popolare una gridview utilizzando un web service,
>ecco l'errore che mi viene fuori:
>
>Il tipo dell'origine dati non è valido. Deve essere IListSource,
>IEnumerable o IDataSource.
>
>
>Il webservice dovrebbe restituirmi un datatable
Ciao!
prova a stampare con GetType il tipo di ritorno del metodo che richiami col ws..
se fosse datatable, l'errore non ci sarebbe, poichè datatable implementa le corrette interfacce per poter essere un datasource..

>
>grazie
di nulla!
>

Alx81 =)

http://blogs.dotnethell.it/suxstellino

deganolu Profilo | Newbie

ecco il mio esempio:

Dim elenco As ws.elenco = New ws.elenco
elenco.Credentials = System.Net.CredentialCache.DefaultCredentials
griglia.datasource=elenco.tabella
griglia.databind


DOVE SBAGLIO ?

alx_81 Profilo | Guru

>ecco il mio esempio:
>
>Dim elenco As ws.elenco = New ws.elenco
>elenco.Credentials = System.Net.CredentialCache.DefaultCredentials
qui prova a fare una response.write di elenco.GetType() e vedi cosa ti stampa..
poi fammi sapere..

Alx81 =)

http://blogs.dotnethell.it/suxstellino

deganolu Profilo | Newbie

Dim elenco As Globale.utenti = New Globale.utenti
elenco.Credentials = System.Net.CredentialCache.DefaultCredentials
Response.Write(elenco.ElencoUtenti.GetType())

'popola la griglia
Me.ElencoUtenti.DataSource = elenco.ElencoUtenti
Me.ElencoUtenti.DataBind()


risultato: Globale.ElencoUtentiResponseElencoUtentiResult

alx_81 Profilo | Guru

>risultato: Globale.ElencoUtentiResponseElencoUtentiResult
ecco.. quello non è un datatable.. quindi non implementa l'interfaccia che ti serve per essere messo in un data source.
Devi controllare com'è la classe Globale.ElencoUtentiResponseElencoUtentiResult e se vuoi che faccia da datasource devi implementare una delle interfacce definite nell'errore.
Oppure, se sai che puoi ciclare il contenuto, è un po' più pesante, ma prendi ogni risultato e lo inserisci in un datatable.. è una cosa un po' bruttina..

Secondo me la cosa migliore è vedere intanto com'è fatta la classe di ritorno del metodo..
poi scegli, se implementare l'interfaccia, se far fare a chi ti espone il metodo un overload che ti torna un datatable nativo oppure se cercare qualche accrocchio come quello del ciclo e del popolamento di un nuovo datatable..
vedi tu

Alx81 =)

http://blogs.dotnethell.it/suxstellino
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