popolare combobox con valuemember e displaymember
bryger non è online. Ultima attività: 08/10/2008 10.30.31bryger
Inserito il: 07 ottobre 2008 13.33
26 messaggi dal 08 set 2006 Istalla Microsoft Silverlight!
Ciao a tutti,
vorrei popolare un combobox come da oggetto, uso il seguente codice :

cSql = "select cod_tipoart, descr_tipoart from tab_tipo_articolo"
cSql = cSql & " where id_azienda = " & idAzienda & ""
cSql = cSql & " order by cod_tipoart"

apro il datatable con la select

associo la prima colonna (contenente il codice) al valore della proprietà selectedvalue della combo in modo che quando seleziono un item restituisca il valore nascosto corretto

cmbTipoArt.DataBindings.Add("SelectedValue", myDataTable, myDataTable.Columns(0).ToString)

cmbTipoArt.DataSource = myDataTable

imposto poi i due valori displaymember e value memeber;
cmbTipoArt.DisplayMember = myDataTable.Columns(1).ToString
cmbTipoArt.ValueMember = myDataTable.Columns(0).ToString

fin qui sembra funzionare nel senso che la combo viene caricata con i valori corretti; il problema nasce quando seleziono l'item nell'evento selectedindexchanged della combo :

Private Sub cmbTipoArt_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbTipoArt.SelectedIndexChanged

If cmbTipoArt.SelectedIndex > -1 Then
tipoArt = cmbTipoArt.SelectedValue.ToString

in cui se eselziono un certo item non mi recupera correttamente il codice corretto, inoltre pur selezionanado un certo item a volte, ma non sempre, appare ancora il precedente.......

come posso fare?
Grazie

Modificato da bryger il 07 ottobre 2008 13.37 -
RE: popolare combobox con valuemember e displaymember
Cradle non è online. Ultima attività: 04/12/2008 20.25.51Cradle
Inserito il: 07 ottobre 2008 14.23
contributi / Community manager / www.aspitalia.com / Blog / 512 messaggi dal 01 lug 2004 Istalla Microsoft Silverlight!
bryger ha scritto:
in cui se eselziono un certo item non mi recupera correttamente il codice corretto, inoltre pur selezionanado un certo item a volte, ma non sempre, appare ancora il precedente.......


Beh, purtroppo la descrizione che fornisci è un po' vaga, se fossi più preciso potrei cercare di aiutarti :)

Intanto ti consiglierei di gestire l'evento SelectedValueChanged in luogo del SelectedIndexChanged.

A presto,
m.
RE: popolare combobox con valuemember e displaymember
bryger non è online. Ultima attività: 08/10/2008 10.30.31bryger
Inserito il: 07 ottobre 2008 15.16
26 messaggi dal 08 set 2006 Istalla Microsoft Silverlight!
Stessa cosa usando l'evento che suggerisci;

mi spiego meglio :

la select che ho indicato restuituisce 6 coppie di valori ed esattamente :

F-ARTICOLO FINITO
FMD-ARTICOLO FINITO MEDAGLIA
FMP-ARTICOLO FINITO METALLO PREZIOSO
M-SEMILAVORATO
MMD-SEMILAVORATO MEDAGLIA
MMP-SEMILAVORATO MEDALLO PREZIOSO

in quest'ordine

dove F, FMD ecc. sono i codici che voglio attribuire al valuemember e le descrizioni al displaymember; come ho detto i valori descrittivi vengono caricati bene percui sembrerebbe che la proprietà displymember funzioni; quando però scelgo una descrizione nella combo caricata succede questo :

la prima volta che scelgo ciascuna voce della combo il codice associato (cioè il value member) viene recuperato correttamente ma la descrizione è quella che ho scelto la volta prima, solo selezionando due volte la stessa descrizione questa viene impostata correttamente a video, esempio:

scelgo ARTICOLO FINITO, recupero codice F
scelgo SEMILAVORATO, recupero codice M ma la combo mi fa vedere ancora ARTICOLO FINITO, se riscelgo ancora SEMILAVORATO, recupero codice M e vedo effettivamente SEMILAVORATO......ecc......

mi sono spiegato?
grazie
RE: popolare combobox con valuemember e displaymember
Cradle non è online. Ultima attività: 04/12/2008 20.25.51Cradle
Inserito il: 07 ottobre 2008 15.54
contributi / Community manager / www.aspitalia.com / Blog / 512 messaggi dal 01 lug 2004 Istalla Microsoft Silverlight!
Ora è molto più chiaro

Ma per caso hai un binding sulla proprietà SelectedValue della tua combobox?
RE: popolare combobox con valuemember e displaymember
bryger non è online. Ultima attività: 08/10/2008 10.30.31bryger
Inserito il: 07 ottobre 2008 17.01
26 messaggi dal 08 set 2006 Istalla Microsoft Silverlight!
sì, vedi ho usato questa istruzione perchè su un libro mi diceva di fare così:

cmbTipoArt.DataBindings.Add("SelectedValue", myDataTable, myDataTable.Columns(0).ToString)

dato che avevo associato le due proprietà cosi :

cmbTipoArt.DisplayMember = myDataTable.Columns(1).ToString
cmbTipoArt.ValueMember = myDataTable.Columns(0).ToString

e in questo modo la valuemember non funzionava;
ho trovato però un altro esempio in cui alle due proprietà veniva associato il nome della colonna in modo esplicito percui ho fatto così :

cmbTipoArt.DisplayMember = myDataTable.Columns(1).columnname
cmbTipoArt.ValueMember = myDataTable.Columns(0).columnname e lavando il data bindings funziona.....

però per curiosità vorrei sapere come mai l'associazione con il databindings provoca quel problema che dicevo...
Grazie
RE: popolare combobox con valuemember e displaymember
Cradle non è online. Ultima attività: 04/12/2008 20.25.51Cradle
Inserito il: 07 ottobre 2008 18.01
contributi / Community manager / www.aspitalia.com / Blog / 512 messaggi dal 01 lug 2004 Istalla Microsoft Silverlight!
Beh, semplicemente perchè quello non è il modo per utilizzare il binding su SelectedValue.

Pensa ad una form di gestione Fatture, in cui hai una ComboBox per selezionare il cliente.
La tua ComboBox sarà collegata in DataSource alla DataTable Clienti, con DisplayMember = "RagioneSociale" e ValueMember="Id"

Il SelectedValue è invece in binding la colonna IdCliente della DataTable Fatture. In questo modo, selezionando il cliente sulla ComboBox, il SelectedValue (e quindi il suo Id) va a finire su IdCliente della fattura.

Dimmi se non mi sono spiegato bene.

Ciao
RE: popolare combobox con valuemember e displaymember
bryger non è online. Ultima attività: 08/10/2008 10.30.31bryger
Inserito il: 08 ottobre 2008 10.30
26 messaggi dal 08 set 2006 Istalla Microsoft Silverlight!
Sì, ho capito il databinding non va fatto sulla stessa tabella su cui lavora la combobox ma su una eventualmente collegata, in pratica fa il lavoro di una join....

Vai a:
Torna al forum |   Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.


PeppeDotNet - 1000 pt
gghi - 310 pt
fabrica - 50 pt

Iscriviti anche tu e raccogli punti. Questo mese in palio VS 2008, SQL Prompt e 1 ebook!


COMMUNITY
ULTIMI MESSAGGI


IN EVIDENZA
MISC
Powered by .db Forums