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
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 filexml 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 lamodifica di un solo valore. Dimmi se ti sono stato d'aiuto.
Capisc e dotnet tu? No! E allor che parl a fà!
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();
...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?...
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.
Associazione Culturale DotNetCampania - C.F.: 95127870632