DotNetCampania
Il primo portale campano dedicato allo sviluppo software con tecnologie Microsoft

DropDownList

rated by 0 users
Risposto This post has 2 verified answers | 4 Replies | 2 Followers

Top 25 Partecipanti
11 Post
Punteggio 232
IronCube posted on 16 apr 2010 16:06

AriSalve,

Ho popolato tramite query linq una dropDownList, i valori estratti dal datasource sono identificativi numerici e vorrei che ad ogni valore caricato nella dropDownList venisse visualizzato un testo da me definito...come posso fare a creare una coppia testo valore dipendente da una query linq??

per maggior chiarezza faccio un esempio:

Ora visualizzo nella dropDownList:                                  Vorrei visualizzare invece:

1                                                                                              Operaio                       --> Valore=1

2                                                                                              Impiegato                    --> Valore=2

3                                                                                              Manager                       --> Valore=3

Risposto Verified Answer

Top 10 Partecipanti
Maschio
288 Post
Punteggio 3.802
Verified by IronCube

Beh, in genere per fare questa cosa puoi usare un enum:

enum TipoLavoro {Operaio = 1, Impiegato, Manager, ...};

Enum è un costrutto presente in quasi tutti i linguaggi di programmazione che consente di dichiarare un'enumerazione. Ad ogni elemento presente
nell'enumerazione è associato un identificativo (ossia un numero intero). Questo identificativo parte da 0. Nel precedente esempio io ho forzato l'indice
di partenza ad 1. Purtroppo utilizzare questa strategia comporta un semplice problema. Se questo "mapping" deve essere modificato spesso,
implementarlo tramite codice, può essere oneroso (nel senso che cmq bisogna mettere mano a codice, e se non sei l'unico a lavorare sul progetto,
sapere dove mettere le mani, può diventare un problema). Per tale motivo si decide si usare spesso una tabella "statica", oppure fare riferimento ad un file
xml dove si possono mappare i valori. E' importante capire una cosa: anche se si può pensare cmq di dover mettere mano a qualcosa per effettuare
modifiche, la soluzione del DB o del file XML può essere la preferita, perché nei precedenti casi non hai bisogno di ricompilare un'intera soluzione per la
modifica di un solo valore.

Dimmi se ti sono stato d'aiuto.

Capisc e dotnet tu? No! E allor che parl a fà!

  • | Punteggio Post: 38
Top 25 Partecipanti
Maschio
34 Post
Punteggio 420
Risposto Giorgio In risposta a 30 apr 2010 14:51
Verified by IronCube

Ma se il testo associato al valore numerico lo riesce a recuperare dalla query, e conosce i nomi delle colonne a cui queste due informazioni appartengono...non gli conviene usare le proprietà della dropdownlist ???

DataTextField : colonna di riferimento per il testo da visualizzare

DataValueField : colonna di riferimento per il valore relativo al testo visualizzato.

Al massimo se non conosci i nomi delle colonne puoi crearti una classe che ha due proprietà 

denominazione e codice

dopo la query ti fai una list<TuaClasse> ci carichi all'interno tutti i codici e le denominazioni che ti servono, dopodichè

MyDropDownlist.DataSource = MyListOFMyClass;

MyDropDownlist. DataTextField = "nomePropietàDenominazione"

MyDropDownlist. DataValueField = "nomePropietàCodice"

MyDropDownlist.DataBind();

 

 

  • | Punteggio Post: 35

All Replies

Top 10 Partecipanti
Maschio
288 Post
Punteggio 3.802
Verified by IronCube

Beh, in genere per fare questa cosa puoi usare un enum:

enum TipoLavoro {Operaio = 1, Impiegato, Manager, ...};

Enum è un costrutto presente in quasi tutti i linguaggi di programmazione che consente di dichiarare un'enumerazione. Ad ogni elemento presente
nell'enumerazione è associato un identificativo (ossia un numero intero). Questo identificativo parte da 0. Nel precedente esempio io ho forzato l'indice
di partenza ad 1. Purtroppo utilizzare questa strategia comporta un semplice problema. Se questo "mapping" deve essere modificato spesso,
implementarlo tramite codice, può essere oneroso (nel senso che cmq bisogna mettere mano a codice, e se non sei l'unico a lavorare sul progetto,
sapere dove mettere le mani, può diventare un problema). Per tale motivo si decide si usare spesso una tabella "statica", oppure fare riferimento ad un file
xml dove si possono mappare i valori. E' importante capire una cosa: anche se si può pensare cmq di dover mettere mano a qualcosa per effettuare
modifiche, la soluzione del DB o del file XML può essere la preferita, perché nei precedenti casi non hai bisogno di ricompilare un'intera soluzione per la
modifica di un solo valore.

Dimmi se ti sono stato d'aiuto.

Capisc e dotnet tu? No! E allor che parl a fà!

  • | Punteggio Post: 38
Top 25 Partecipanti
11 Post
Punteggio 232

...in linea di massima ho capito, ma il mio unico dubbio è che i valori (gli interi) della dropDownList provengono da un'interrogazione linq e gli stessi valori dovranno poi servire per un'altra interrogazione, quindi se io utilizzo un tipo enum, posso far corrispondere ad un valore intero una stringa, in modo da mascherare i valori con delle etichette?...

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
288 Post
Punteggio 3.802

Ciao IronCube, se già conosci i possibili valori che una query linq ti può restituire (e quindi conosci anche il range), allora puoi create la Enum ad hoc per visualizzare determinate stringhe in base ai valori.

Capisc e dotnet tu? No! E allor che parl a fà!

  • | Punteggio Post: 44
Top 25 Partecipanti
Maschio
34 Post
Punteggio 420
Risposto Giorgio In risposta a 30 apr 2010 14:51
Verified by IronCube

Ma se il testo associato al valore numerico lo riesce a recuperare dalla query, e conosce i nomi delle colonne a cui queste due informazioni appartengono...non gli conviene usare le proprietà della dropdownlist ???

DataTextField : colonna di riferimento per il testo da visualizzare

DataValueField : colonna di riferimento per il valore relativo al testo visualizzato.

Al massimo se non conosci i nomi delle colonne puoi crearti una classe che ha due proprietà 

denominazione e codice

dopo la query ti fai una list<TuaClasse> ci carichi all'interno tutti i codici e le denominazioni che ti servono, dopodichè

MyDropDownlist.DataSource = MyListOFMyClass;

MyDropDownlist. DataTextField = "nomePropietàDenominazione"

MyDropDownlist. DataValueField = "nomePropietàCodice"

MyDropDownlist.DataBind();

 

 

  • | Punteggio Post: 35
Pagina 1 di 1 (5 elementi) | RSS

Associazione Culturale DotNetCampania - C.F.: 95127870632

Powered by Community Server (Commercial Edition), by Telligent Systems