Popolare combobox da file xml

martedì 02 ottobre 2007 - 16.36

Argosk Profilo | Newbie

Ciao a tutti,

ho la seguente necessità di popolare una combox da un file xml.

I campi del file xml con cui voglio popolare la combobox sono 2, id e categoria.
Ho fatto delle prove ma non sono riuscito a popolarla ..

Ho cercato anche su internet ma non sono un esperto di dot.net

Qualcuno mi può fare un esempio? Ve ne sarei infinitivamente grato!!!


Danjwo Profilo | Newbie

Ciao.

Un Metodo che ho usato un paio di volte (e che penso sia abbastanza contorto ma mi funziona )
è questo

1) Creo un file XML in questo caso l'ho chiamato elenco.xml e scrivo il codice:

<?xml version="1.0" standalone="yes"?> <database> <ELEMENTO> <ID1>1</ID1> <Categoria1>VB.NET</Categoria1> </ELEMENTO> <ELEMENTO> <ID2>2</ID2> <Categoria2>Visual Basic</Categoria2> </ELEMENTO> <ELEMENTO> <ID3>3</ID3> <Categoria3>VBA</Categoria3> </ELEMENTO> </database>

2) all'interno di .net scrivo il codice:

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

3) Il risultato che ottengo è:


532x263 17Kb

Ps. Si lo so sono un newbie...

Argosk Profilo | Newbie

Grazie mille Danjwo!!!! Funziona alla grande! Senza il tuo aiuto non ci sarei riuscito, ancora grazie!


Un altra cosa se non rompo troppo.... Come faccio ad associare alla combobox il value l'ID ?

Argosk Profilo | Newbie

Io ho fatto in questo modo

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

ma non va, o meglio mi recupera sempre e solo l'ultimo ID

SSUPERPIPPO Profilo | Guru

Ciao

ma perchè non fare direttamente il binding del Dataset alla combobox?

' Crei il Dataset dal tuo file .xml

Dim ds As New Data.DataSet
ds.ReadXml("c:\elenco.xml")

' Associ il Dataset alla tua combobox

TuaCombobox.DataSource = ds.Tables(0)
TuaCombobox.ValueMember = "ID"
TuaCombobox.DisplayMember = "Categoria"

In questo modo la proprietà SelectedValue conterrà l'ID selezionato mentre SelectedText conterrà il testo selezionato.

Ciao

Alessandro


http://blogs.dotnethell.it/alebadalin

Xnetus Profilo | Junior Member

>Io ho fatto in questo modo
>
> Dim ds As New Data.DataSet
> Dim i As Integer
> Dim j As Integer
> Dim elemento As String
> ds.ReadXml("c:\elenco.xml")
> For i = 0 To ds.Tables("ELEMENTO").Rows.Count - 1
> j = i + 1
>elemento = ds.Tables("ELEMENTO").Rows(i).Item("ID" + j.ToString)
>+ " - " + ds.Tables("ELEMENTO").Rows(i).Item("Categoria" + j.ToString)
> ComboBox1.Items.Add(elemento)
>ComboBox1.ValueMember = ds.Tables("ELEMENTO").Rows(i).Item("ID"
>+ j.ToString)
> Next
>
>ma non va, o meglio mi recupera sempre e solo l'ultimo ID

Queste funzioni dove le richiami nel progetto?



http://blogs.dotnethell.it/Xnetus/

Xnetus Profilo | Junior Member

>Io ho fatto in questo modo
>
> Dim ds As New Data.DataSet
> Dim i As Integer
> Dim j As Integer
> Dim elemento As String
> ds.ReadXml("c:\elenco.xml")
> For i = 0 To ds.Tables("ELEMENTO").Rows.Count - 1
> j = i + 1
>elemento = ds.Tables("ELEMENTO").Rows(i).Item("ID" + j.ToString)
>+ " - " + ds.Tables("ELEMENTO").Rows(i).Item("Categoria" + j.ToString)
> ComboBox1.Items.Add(elemento)
>ComboBox1.ValueMember = ds.Tables("ELEMENTO").Rows(i).Item("ID"
>+ j.ToString)
> Next
>
>ma non va, o meglio mi recupera sempre e solo l'ultimo ID

Queste funzioni dove le richiami nel progetto?



http://blogs.dotnethell.it/Xnetus/

Argosk Profilo | Newbie

>Ciao
>
>ma perchè non fare direttamente il binding del Dataset alla combobox?
>
>' Crei il Dataset dal tuo file .xml
>
>Dim ds As New Data.DataSet
>ds.ReadXml("c:\elenco.xml")
>
>' Associ il Dataset alla tua combobox
>
> TuaCombobox.DataSource = ds.Tables(0)
> TuaCombobox.ValueMember = "ID"
> TuaCombobox.DisplayMember = "Categoria"
>
>In questo modo la proprietà SelectedValue conterrà l'ID selezionato
>mentre SelectedText conterrà il testo selezionato.
>
>Ciao
>
>Alessandro
>
>
>http://blogs.dotnethell.it/alebadalin

Ciao ho fatto così come mi hai detto e fuziona alla perfezione proprio come volevo!

Sai per caso se è fattibile dire alla combo di mostrare solamente delle voci in base al valore passato da un altra combo?

Mi spiego meglio, ho questa combo che mostra la categoria e passa l'id come value, ora ho sempre un altra combo sullo stesso form che a sua volta è popolata anche essa da un file xml, io vorrei che questa seconda combo mi facesse visualizzare le voci in base all'id passato dalla prima combo...è possibile?

Grazie x l'aiuto

SSUPERPIPPO Profilo | Guru

>Ciao ho fatto così come mi hai detto e fuziona alla perfezione
>proprio come volevo!
>
>Sai per caso se è fattibile dire alla combo di mostrare solamente
>delle voci in base al valore passato da un altra combo?
>
>Mi spiego meglio, ho questa combo che mostra la categoria e passa
>l'id come value, ora ho sempre un altra combo sullo stesso form
>che a sua volta è popolata anche essa da un file xml, io vorrei
>che questa seconda combo mi facesse visualizzare le voci in base
>all'id passato dalla prima combo...è possibile?
>
>Grazie x l'aiuto
>

Direi che ti conviene collegare il combobox ad und dataview che generi dinamicamente all'evento SelectedIndexChanged della prima combobox in funzione dell'elemento selezionato.

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

Argosk Profilo | Newbie


>
>Direi che ti conviene collegare il combobox ad und dataview che
>generi dinamicamente all'evento SelectedIndexChanged della prima
>combobox in funzione dell'elemento selezionato.
>


Ciao Alessandro innanzi tuto grazie x l'aiuto, chiedo troppo se mi potresti fare un esempio?

Ti chiedo quest'ultima cosa poi non ti stresso più promesso!

SSUPERPIPPO Profilo | Guru

Qui trovi un esempio di come creare un DataView http://msdn2.microsoft.com/it-it/library/system.data.dataview.rowfilter(VS.80).aspx

Una volta creato il DataView, anzichè effettuare il binding con il DataSet farai il binding del DataView che hai creato.

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

Argosk Profilo | Newbie

>Qui trovi un esempio di come creare un DataView http://msdn2.microsoft.com/it-it/library/system.data.dataview.rowfilter(VS.80).aspx
>
>Una volta creato il DataView, anzichè effettuare il binding con
>il DataSet farai il binding del DataView che hai creato.


Ho fatto come nell'esempio ma non ci riesco...Mi resta tristemete vuota...


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


Metto anche il secondo file xml da quale prelevo i dati:


<?xml version="1.0" standalone="yes" ?>
<database>
<ELEMENTO>
<ID>9</ID>
<CATID>6</CATID>
<Categoria>SottoCategoria di prova</Categoria>
</ELEMENTO>
<ELEMENTO>
<ID>10</ID>
<CATID>7</CATID>
<Categoria>Cmputer</Categoria>
</ELEMENTO>
<ELEMENTO>
<ID>11</ID>
<CATID>8</CATID>
<Categoria>Elettrodomestici</Categoria>
</ELEMENTO>
</database>

Argosk Profilo | Newbie

Tutto risolto psto il codice se può servire a qualcuno

Dim ds2 As New Data.DataSet ds2.ReadXml("c:\sottocategorie.xml") Dim view As DataView = New DataView With view .Table = ds2.Tables("ELEMENTO") .RowFilter = "CATID = '" & ComboBox1.SelectedValue.ToString & "'" End With ComboBox2.DataSource = view ComboBox2.ValueMember = "ID" ComboBox2.DisplayMember = "Categoria" End Sub
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