Passaggio datagrid da server ASP a client VB.NET

martedì 12 giugno 2012 - 14.07
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio Express

ilgrongo Profilo | Newbie

Salve

Ho un client VB.net nel quale vi è un datagrid che mostra gli elementi di una tabella.
Il client invoca un servizio da un applicazione server ovviamente definita che gli dovrebbe restituire un oggetto datagrid. Quello che ottengo però è solo un messaggio di errore del tipo :

System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: The type System.Web.UI.WebControls.DataGrid was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.

Di seguito il codice.
Grato fin da adesso a chi potesse darmi una mano
\\ Antonio


/* PARTE VB.NET */
Dim sql As String = "SELECT ut_cognome,ut_nome,ut_codice,ut_sesso,ut_citta,ut_provincia,ut_dataregistrazione,ut_credito,ut_statochat,ut_connesso,ut_ultimaconn,ut_telefono FROM utenti ORDER BY ut_cognome,ut_nome"


Dim webConsumer As New localhost.WebService1

Dim datagrid1 = webConsumer.ritornaGrglia(sql)


/* PARTE webservice.asmx */
<WebMethod()> _
Public Function ritornaGrglia(stringa)
Dim ds As New DataSet
Dim DataGridView1 As New DataGrid
Dim MyConString As New Odbc.OdbcConnection("DRIVER={MySQL ODBC 3.51 Driver};" & _
"SERVER=localhost;" & _
"DATABASE=meetupdb;" & _
"UID=root;" & _
"PASSWORD=antonio;" & _
"OPTION=3;")

Dim sql As String = "SELECT ut_cognome,ut_nome,ut_codice,ut_sesso,ut_citta,ut_provincia,ut_dataregistrazione,ut_credito,ut_statochat,ut_connesso,ut_ultimaconn,ut_telefono FROM utenti ORDER BY ut_cognome,ut_nome"


REM Dim webConsumer As New localhost.WebService1

REM DataGridView1 = webConsumer.ritornaGrglia(sql, DataGridView1)

MyConString.Open()

Dim cmd As New Odbc.OdbcCommand(sql, MyConString)
Dim adp As New Odbc.OdbcDataAdapter(cmd)
adp.Fill(ds, "utenti")

DataGridView1.DataSource = ds
DataGridView1.DataMember = "utenti"

Return DataGridView1
End Function


System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: The type System.Web.UI.WebControls.DataGrid was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.

nico839 Profilo | Senior Member

ciao, così ad occhio e croce sembra che non riconosca il tipo Datagrid nella comunicazione.
Hai provato a fare ritornare al web service direttamente il datatable e questo datatable darlo in pasto al datagrid invece di far tornare tutto un datagrid'?
cioè

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ciao.
Nicolas

http://perledinico.blogspot.com

ilgrongo Profilo | Newbie

RISOLTO !!!

Grazie al consiglio di Nico ho cambiato il codice lato server nel modo sotto e adesso va!!!.
Chiedo scusa ma non ho capito come si cambia lo stato del Post in RISOLTO.
Se qualcuno provvede magari...

Grazie ancora
\\ Antonio

<WebMethod()> _
Public Function ritornaGrglia(stringa) As DataSet
Dim ds As New DataSet
Dim DataGridView1 As New DataGrid
Dim MyConString As New Odbc.OdbcConnection("DRIVER={MySQL ODBC 3.51 Driver};" & _
"SERVER=localhost;" & _
"DATABASE=meetupdb;" & _
"UID=root;" & _
"PASSWORD=antonio;" & _
"OPTION=3;")

Dim sql As String = "SELECT ut_cognome,ut_nome,ut_codice,ut_sesso,ut_citta,ut_provincia,ut_dataregistrazione,ut_credito,ut_statochat,ut_connesso,ut_ultimaconn,ut_telefono FROM utenti ORDER BY ut_cognome,ut_nome"

MyConString.Open()

Dim cmd As New Odbc.OdbcCommand(sql, MyConString)
Dim adp As New Odbc.OdbcDataAdapter(cmd)
adp.Fill(ds, "utenti")
Return ds

End Function

=======================================================================




Ciao Nico
Grazie per la risposta
Ho provato a cambiare in questo modo:

<WebMethod()> _ /SERVER asmx/
Public Function ritornaGrglia(stringa)
Dim ds As New DataSet
Dim DataGridView1 As New DataGrid
Dim MyConString As New Odbc.OdbcConnection("DRIVER={MySQL ODBC 3.51 Driver};" & _
"SERVER=localhost;" & _
"DATABASE=meetupdb;" & _
"UID=root;" & _
"PASSWORD=antonio;" & _
"OPTION=3;")

Dim sql As String = "SELECT ut_cognome,ut_nome,ut_codice,ut_sesso,ut_citta,ut_provincia,ut_dataregistrazione,ut_credito,ut_statochat,ut_connesso,ut_ultimaconn,ut_telefono FROM utenti ORDER BY ut_cognome,ut_nome"

MyConString.Open()

Dim cmd As New Odbc.OdbcCommand(sql, MyConString)
Dim adp As New Odbc.OdbcDataAdapter(cmd)
adp.Fill(ds, "utenti")
Return ds
End Function

/* VB.NET */
Dim sql As String = "SELECT ut_cognome,ut_nome,ut_codice,ut_sesso,ut_citta,ut_provincia,ut_dataregistrazione,ut_credito,ut_statochat,ut_connesso,ut_ultimaconn,ut_telefono FROM utenti ORDER BY ut_cognome,ut_nome"

Dim datagrid1 As New DataGrid
Dim webConsumer As New localhost.WebService1

DataGridView1 = webConsumer.ritornaGrglia(sql)

DataGridView1.DataSource = ds
DataGridView1.DataMember = "utenti"

MA adesso ottengo questo...

System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: The type System.Data.DataSet may not be used in this context. To use System.Data.DataSet as a parameter, return type, or member of a class or struct, the parameter, return type, or member must be declared as type

Ma dove dovrebbe essere dichiato il tipo che dice nel messaggio di errore ?

Grazie...

nico839 Profilo | Senior Member

Prego, sono contento di essere stato di aiuto...
Ciao.
Nicolas

http://perledinico.blogspot.com
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5