Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
Web Services, XML
Problema a trasferire una tabella tramite Web Service
domenica 26 aprile 2009 - 20.26
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
netaddicted
Profilo
| Newbie
19
messaggi | Data Invio:
dom 26 apr 2009 - 20:26
Ciao a tutti,
non riesco ad ottenere una semplice data table richiamando in locale un web service
che ho sviluppato.
Ho provato con delle semplici stringhe e tutto va bene.
Con la data table, invece, non ottengo alcun errore, semplicemente il risultato della chiamata è un oggetto vuoto.
Ho provato a testare separatamente il web service, questo è il codice che genera una semplice data table
sul web service:
DataTable myTable = new DataTable("Table1");
DataColumn MyColumn = new DataColumn("Test");
myTable.Columns.Add(MyColumn);
DataRow myRow = myTable.NewRow();
myTable.Rows.Add(myRow);
myTable.Rows[0][0] = "Test This!";
return myTable;
Il test del web service funziona, in fase di debug riesco a visualizzare i dati della tabella quando mi ci
soffermo con il mouse in fase di interruzione.
E questo è il codice XML che risulta dalla chiamata:
<?xml version="1.0" encoding="utf-8" ?>
- <DataTable xmlns="
http://tempuri.org/">
- <xs:schema id="NewDataSet" xmlns="" xmlns:xs="
http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Table1" msdata:UseCurrentLocale="true">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="Table1">
- <xs:complexType>
- <xs:sequence>
<xs:element name="Test" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
- <DocumentElement xmlns="">
- <Table1 diffgr:id="Table11" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<Test>Test This!</Test>
</Table1>
</DocumentElement>
</diffgr:diffgram>
</DataTable>
Il problema sorge quando richiamo il web service dal client (una semplice applicazione Win Form).
Questo è il codice della chiamata asincrona (che nel caso delle stringhe funziona):
private void btnDownload_Click(object sender, EventArgs e)
{
Service School_WS = new Service();
School_WS.GetSchoolsDataCompleted+=new GetSchoolsDataCompletedEventHandler(School_WS_GetSchoolsDataCompleted);
School_WS.GetSchoolsDataAsync();
}
public void School_WS_GetSchoolsDataCompleted(Object sender, GetSchoolsDataCompletedEventArgs e)
{
dataGridView1.DataSource = e.Result;
}
Qualcuno ha idea del perchè non restituisce la tabella
?
Grazie per l'aiuto
Francesco
Jeremy
Profilo
| Guru
1.527
messaggi | Data Invio:
lun 27 apr 2009 - 10:18
Ciao Francesco.
Semplicemente perchè la DataTable non è un oggetto serializzabile.....a differenza del DataSet.
Facci sapere...
Ciao
netaddicted
Profilo
| Newbie
19
messaggi | Data Invio:
mar 28 apr 2009 - 23:35
Infatti...poi ho capito.
Però non è subito chiaro...perchè Visual Studio permette l'invocazione del metodo e restituisce persino
l'XML se poi non me ne posso fare niente?
Ho risolto creando una classe che descrive il singolo record, ho messo le istanze della classe in un array e l'ho trasferito al client.
Una volta dall'altra parte ho deserializzato le istanze e le ho convertite in righe della datatable che ho collegato
alla Gridview.
Grazie e alla prossima, siete un punto di riferimento.
Francesco
Torna su
Stanze Forum
Elenco Threads
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 !