Bindare Nullable Types in automatico

di Cristian Civera, in .NET 2.0,

Oggi Andrea "pota pota" ha fatto una domanda molto interessante nel forum riguardo ad un problema che non avevo ancora incontrato. GridView, DetailsView, FormView danno la possibilità di auto generare i fields da mostrare in funzione della sorgente dati, ma nell'esempio portato caricava una classe contenente dei membri nullabili (Nullable types), caratteristica introdotta in .NET 2 poiché si basa sulla struttura Nullable generica. Questi membri però non vengono mostrati.

I controlli si appoggiano a TypeDescriptor.GetProperties per ottenere le proprietà di un tipo (che implementa eventualmente ICustomTypeDescriptor) e le filtra interrogando il metodo IsBindableType. Questo fa sì che vengano scartati membri diversi dai tipi primitivi, date o stringhe. Purtroppo il Type di un membro nullabile è Nullable generico e non il tipo di valore che si sta rendendo nullabile.

Fortunamente il metodo è sovrascrivibile e si può fargli digerire anche i nullable types:

public class MyGridView : GridView { 

    public override bool IsBindableType(Type type) {
        return !(!base.IsBindableType(type) && !type.IsGenericType);
    }

}

Spero possa esservi utile in futuro ;-)

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.

Nella stessa categoria
I più letti del mese