#633 - Un custom control DropDownList con più DataTextField

ASP.NET ha introdotto un nuovo meccanismo di caricamento dei dati più facile e rapido, simile a quello che si utilizza nelle applicazioni Winforms sviluppate con il vecchio VB6. In particolare controlli come DropDownList, RadioButtonList, CheckBoxList ereditano tutti da ListControl e dispongono delle proprietà DataValueField, DataTextField, DataTextFormatString che permettono di indicare rispettivamente il nome del campo che farà da valore, da testo e la sua formattazione, di ogni elemento prelevato dalla sorgente dati.
Può capitare però di voler utilizzare più campi concatenandoli tra loro come testo. Una prima soluzione è quella di effettuare l'unione direttamente nella sorgente. Questo è possibile con query SQL, viste o modificando un DataSet, ma non sempre la sorgente è una di questi o non è possibile fare quelle variazioni.
Questa DropDownList invece dispone di una nuova proprietà DataTextFields che consente di specificare più campi separandoli con una virgola. Utilizzando poi appropriatamente DataTextFormatString sarà possibile concatenarli tra loro.
Ecco un esempio del suo utilizzo:

<%@ Register tagPrefix="aspitalia" assembly="DropDownList" Namespace="ASPItalia.com.Scripts" %>

<form runat="server">
<aspitalia:DropDownList DataValueField="id" DataTextFields="nome,cognome" DataTextFormatString="{0} - {1}" runat="server" />
</form>

Supponendo che la DataSource sia una tabella che dispone dei campi nome, cognome e id andiamo a congiungere il nome (primo campo quindi {0}) e il cognome (secondo campo quindi {1}) con un trattino.
Il controllo è stato ottenuto ereditando da DropDownList e ridefinendo il metodo OnDataBinding. Nell'allegato è disponibile tutto il sorgente. Riassumendolo, viene divisa la proprietà DataTextFields ricavando la lista dei campi e prelevandoli dalla sorgente per poi formattarli con String.Format(DataTextFormatString, listadivalori).

Nota: Questo script contiene un allegato.


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

ottavio8 scrive:
#633 - Un custom control DropDownList con più DataTextField

C'è qualcosa di simile per il DataValueField???Grazie Ciao
venerdì 1 febbraio 2008 | 2 risposte
luc_asp scrive:
#633 - Un custom control DropDownList con più DataTextField

compilando ricevo il seguente errore:BC30560: 'DropDownList' is ambiguous in the namespace 'ASPItalia.com.Scripts'
domenica 26 marzo 2006 | 1 risposta
davidedavide scrive:
#633 - Un custom control DropDownList con più DataTextField

se la fonte dati invece che un datatable è una tabella di un db come si fa ad usare il custom control?
martedì 23 novembre 2004 | 2 risposte

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC