Un custom control DropDownList con più DataTextField

di Cristian Civera, in UserScript, ASP.NET, C#,

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).

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi