Form e dataset

giovedì 30 aprile 2009 - 10.41

patrizia84 Profilo | Junior Member

Ciao.
Ho una form con delle label e delle textbox come per esempio

Nome : Tizio
Cognome : caio
Indirizzo : Via xxx
Citta: citta


Da questa form devo associargli un dataset per poi creare un file .xml .
Potete darmi delle indicazioni di come creare questo dataset e di come deve essere strutturato.
Non ho proprio idea di come posso fare…
Grazie.

Jeremy Profilo | Guru

Ciao Patrizia.
Hai un database al quale devi/puoi appoggiarti o ti serve il Dataset solo per permettere la serializzazione dei dati al Client?

Facci sapere...
Ciao.

patrizia84 Profilo | Junior Member

Ciao.
Non ho un database..
Ho una form..
Allora pensavpo di creare un dataset con una tabella e n colonne e dopo popolare le colonne con una riga e i dati prenderli dal form...
Va bene?

Jeremy Profilo | Guru

Ciao Patrizia.
>Va bene?
Non conosco bene lo scenario, quindi non saprei dirti con certezza se hai scelto la soluzione migliore.

Comunque sia puoi creare e popolare un Dataset da codice in questo modo:
Dim ds As New DataSet ds.Tables.Add(New DataTable("Persone")) ds.Tables("Persone").Columns.Add(New DataColumn("Cognome")) ds.Tables("Persone").Columns.Add(New DataColumn("Nome")) ds.Tables("Persone").Columns.Add(New DataColumn("Indirizzo")) ds.Tables("Persone").Columns.Add(New DataColumn("Citta")) Dim Row As DataRow Row = ds.Tables("Persone").NewRow Row("Cognome") = txtCognome.Text Row("Nome") = txtNome.Text Row("Indirizzo") = txtIndirizzo.Text Row("Citta") = txtCitta.Text ds.Tables("Persone").Rows.Add(Row)

Facci sapere...
Ciao

patrizia84 Profilo | Junior Member

Grazie mille...
Ho fatto il dataset e dopo ho utilizzato questa istruzione per scrivere il file .xml.
data_set.WriteXml(MapPath("provaXML.xml"));


Se adesso voglio visualizzarlo?
Ho cercato di assegnare ad un grid il dataset associato al file con


DataSet mio = new DataSet();
mio.ReadXml(MapPath("provaXML.xml"));

ma mi restiutisce l’errore: Il IListSource non contiene alcuna origine dati. non contiene alcuna origine dati.

Dove sbaglio?
Forse non salvo il file xml dopo l’istruzione data_set.WriteXml?

Jeremy Profilo | Guru

Ciao Patrizia.
>Dove sbaglio?
Non ne ho idea .... Io ho provato e funziona.

>Forse non salvo il file xml dopo l’istruzione data_set.WriteXml?
No! il metodo WriteXml crea e salva il file senza bisogno d'altro.

Prova a controllare se, dopo aver eseguito il WriteXml, effettivamente viene creato il file nel percorso di MapPath .... ed eventualmente controlla anche i permessi di scrittura di quella cartella.

Facci sapere...
Ciao




patrizia84 Profilo | Junior Member

Ho controllato e mi crea solo questo :

<?xml version="1.0" standalone="yes"?>
<NewDataSet />

Non c’è nulla dentro!
Che altra funzione devo usare oltre a data_set.WriteXml(MapPath("provaXML.xml"))?

Jeremy Profilo | Guru

Mostra il codice che hai scritto.
A quanto sembra non valorizzi come si deve il Dataset e tutto il resto.

Dovresti ottenere un risultato del genere:

<?xml version="1.0" standalone="yes" ?>
- <NewDataSet>
- <Persone>
<Cognome>Prova</Cognome>
<Nome>prova</Nome>
<Indirizzo>Prova</Indirizzo>
<Citta>Prova</Citta>
</Persone>
</NewDataSet>

Facci sapere...
Ciao

patrizia84 Profilo | Junior Member

Provo a postare il codice:

DataSet set = new DataSet();
DataTable table = new DataTable();
set.Tables.Add(table);


//creazione struttura del datatable
table.Columns.Add("nome");
table.Columns.Add("cognome");
table.Columns.Add("indirizzo");

//creazione struttura del II datatable
DataTable table2= new DataTable();
table2.Columns.Add("formazione");
table2.Columns.Add("esperienze");

set.Tables.Add(table2);


//popolamento dati nella prima tabella del dataset

DataRow riga =table.NewRow();
riga[0] = nome.Text.ToString();
riga[1] = cognome.Text.ToString();
riga[2] = indirizzo.Text.ToString(););

//popolamento dati nella seconda tabella del dataset

DataRow riga2 = table2.NewRow();
riga2[0] = formazione.Text.ToString();
riga2[1] = esperienze.Text.ToString();

set.WriteXml(MapPath("provaXML.xml"));


Grazie per la pazienza...

Jeremy Profilo | Guru

Ciao Patrizia.
Ho modificato un pò il tuo codice in modo che possa funzionare.

Il risultato è questo:
<?xml version="1.0" standalone="yes" ?>
- <NewDataSet>
- <Table1>
<Cognome>Prova</Cognome>
<Nome>Prova</Nome>
<Indirizzo>Prova</Indirizzo>
</Table1>
- <Table2>
<Formazione>Prova</Formazione>
<Esperienze>Prova</Esperienze>
</Table2>
</NewDataSet>

Il codice è questo:
DataSet set = new DataSet(); DataTable table = new DataTable(); table.Columns.Add("Cognome"); table.Columns.Add("Nome"); table.Columns.Add("Indirizzo"); DataTable table2 = new DataTable(); table2.Columns.Add("Formazione"); table2.Columns.Add("Esperienze"); DataRow riga = table.NewRow(); riga["Cognome"] = txtNome.Text; riga["Nome"] = txtCognome.Text; riga["Indirizzo"] = txtIndirizzo.Text; DataRow riga2 = table2.NewRow(); riga2["Formazione"] = txtFormazione.Text; riga2["Esperienze"] = txtEsperienze.Text; table.Rows.Add(riga); table2.Rows.Add(riga2); set.Tables.Add(table); set.Tables.Add(table2); set.WriteXml(MapPath("provaXML.xml"));

Effettivamente c'erano degli errori nel codice che hai prodotto.
Ho modificato il tuo codice cercando di non stravolgere il tuo modo di programmare.
Se però dai un occhio al codice che ti postato prima, ti accorgi dell'ordine in cui dovresti spostare i riferimenti ai vari oggetti(programmando secondo la tua logica).
Quindi:
-Creo un nuovo Dataset.
-Creo una nuova DataTable.
-Creo e aggiungo delle nuove colonne alla DataTable.
-Dichiaro un oggetto DataRow.
-Creo una nuova istanza della DataRow secondo lo schema della DataTable alla quale appartiene (DataTable.NewRow)
-Popolo la DataRow.
-Aggiungo la DataRow alla DataTable.(Questo passaggio te lo eri proprio diementicato)
-Aggiungo la DataTable al Dataset.

Spero di essere stato chiaro, rimango comunque a disposizione per ulteriori info.

Facci sapere...
Ciao.


P.S. Rileggendo il post, mi accorgo che, per come è scritto, potrebbe sembrare che io voglia sollevare delle critiche .... vorrei precisare che non è assolutamente mia intenzione.

Jeremy Profilo | Guru

Dimenticavo ...... L'estensione ToString() non è necessaria per la proprietà Text in quanto già di tipo String.

Ciao.

patrizia84 Profilo | Junior Member

Grazie..
funziona!!

A presto.
Ciao.
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