575 messaggi dal 23 giugno 2003
www.padovaboy.it
Salve a tutti!
E' un sacco che non scrivo qui ma il tempo scarseggia come sempre!

Ho un dubbio e mi chiedevo se magari qualcuno ha trovato un buon modo per risolverlo:

Creando una Listview che non fa altro che mostrare una serie di importi tramite Eval(""), mi son trovato di fronte la necessità di formattare un sacco di volte l'output.
Ho sfruttato la possibilità di Eval di passare la "string-formatter", però non è proprio il suo visto che devo farlo per ogni eval e poi magari un domani voglio cambiare il tipo di formattazione...e sai che noce..

"pre-formattare" il datasource non mi pare carino.

Usare una expression registrata attraverso un'expressionBuilder mi pare più carino ma cmq ancora macchinoso.

Possibile che non esiste soluzione più semplice?

Ps: io oramai uso la ListView per ogni cosa anche per una maschera di details (in pratica assegno una lista con 1 solo elemento).
Voi come altro fate?
Tnx at all!

(ps saluti a tutti ma sopratutto a Nostromo che m'è sempre stato d'aiuto al "grande golia" a cui prima o poi andrò a offrire na birra :P)

www.padovaboy.it dal 2001 con furore :D
ciao ricambio il saltuo è un pezzo che non vedevo postare sul forum.

personalmente realizzerei un controllo custom, o meglio ancora un ControlAdapter in modo che lo puoi agganciare ad ogni controllo esistente.

pensa che ho usato i control adapter ad esempio per iniettare javascript nell textbox che avevano un numero di caratteri limitato.

insomma i campi d'utilizzo sono molteplici e hai il vantoggio di non modificare una riga nelle pagine

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
575 messaggi dal 23 giugno 2003
www.padovaboy.it
Ciao Marco,
perdona per il ritardo della mia risposta dovuta un pò a raffreddore, un pò troppe cose da fare e un pò perché sto cercando info su ControlAdapter.
Ho capito a cosa serve e me lo sono studiato un pò ma non ne ho mai fatto uno.
Onestamente non mi piace come idea perché (sempre tenendo conto che potrei non aver capito una mazza :D):
- legherei il controlAdapter ad un webcontrol (come List) inesorabilmente via web.config (il suo bello ma anche il brutto), rischiando magari di dimenticarmi di averlo implementato e impazzire se le cose non vanno nel verso giusto
- non avrei controllo "granulare": potrei anche dirgli tutti gli oggetti che sono float vanno renderizzati in una certa maniera...ma poi se voglio fare delle eccezzioni?

etc.. etc..

Pensandoci però missà che la cosa più semplice sarebbe fare un bel "SmartPanel" ovvero ereditare un panel e renderlo "speciale": ovvero ogni figlio renderizzato all'eval dovrà appunto subire una certa trasformazione.
Così se lo definisco so che c'è e so cosa va a influenzare (i figli).

Che ne pensi?
E sopratutto...come lo realizzo? ehhehehe :P uff madonnina quanta roba da studiare! :)

www.padovaboy.it dal 2001 con furore :D
per me la soluzione migliore rimane sempre il ControlAdapter.

lo leghi al web.config ed è quello il bello, non modifichi nessuna pagina.

ad esempio crei un ControlAdapter per la TextBox, vista a possivilità del ControlAdapter di leggere gli attibuti del controllo che lo utilizza puoi modificare il comportamento.

poi ti puoi sempre creare dei tuoi controlli che già formattono i dati come desideri.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
575 messaggi dal 23 giugno 2003
www.padovaboy.it
Hmmm forse mi manca qualcosa allora, perché con il codice che ho visto e quello che ho letto non ci azzecco molto con quel che dici.

Es: io ho la situazione di una ListView:

<asp:ListView belblalblbasl...>
...
<ItemTemplate>
blablbalblalb...
<%#Eval("Importo1")%>
<%#Eval("Importo2")%>
<%#Eval("Importo3")%>
<%#Eval("Importo4")%>
<%#Eval("Importo5")%>
<%#Eval("Importo6")%>
blablablabla...


Gli importi vorrei formattarli quindi dovrei trasformare il tutto in:

<%#Eval("Importo1", "{0:C2}")%>

A rigor di logica quindi per fare qualcosa di "automatizzato" dovrei formulare una espressione che in "meta-italiano-linguaggio" dovrebbe essere:

1) becca la ListView
2) per il suo ItemTemplate
3) controlla l'invocazione dell'Eval
4) Se l'Eval mi sputa un valore che risulta essere un float
5) allora formatta il valore in una certa maniera

come meeeeezzzeeeega dovrei fare? :)

www.padovaboy.it dal 2001 con furore :D
puoi fare anche come hai descritto ma mi sembra la strada più lunga enon è u na passeggiato beccare l'eval quando viene valutato.

usa Eval associato ad una proprietà di un controllo, creati magari un tuo controllo che ederiti da WebControl, lo usi come un semplice segnaposto, poi la logica di formattazione la metti nel ControlAdapter.

se riesco a liberarmi ti faccio un esempio

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
575 messaggi dal 23 giugno 2003
www.padovaboy.it
HMMMMMMMMMMMMMMMMMM ok ora è più chiaro.
Te dici:

Creati una sorta di "label" per formatazzioni tipo:

public class FormattedLabel : WebControl

public String Text{}

public void Render..etc...


E lo uso nel template magari di ListView (solo per esempio) così:

<my:FormattedLabel id="Formatted" Text='<%#Eval("Importo")%>' />

Poi con l'uso di un Adapter posso andare a modificare il rendering di FormattedLabel magari dicendogli di formattare la proprietà Text in un modo piuttosto che in un altro.

Questo verrebbe in effetti comodo qualora decidessi di applicare logiche differenti a FormattedLabel spostandone la logica sull'adapter esterno (che appunto posso cambiare, togliere o mettere): vedi creare un "doppione" del portale per un'altra lingua o appunto per fare in modo che l'adapter "capisca" la lingua corrente e modifichi il comportamento al volo di FormattedLabel...

E' interessante...certo non è come scrivere semplicemente <%#Eval("importo")%>....

Cmq è così che la pensavi?

www.padovaboy.it dal 2001 con furore :D
si piò o meno farei così, solo che farei una proprietà Value di tipo Object almeno puoi passare qualsiasi tipo di venga voglia di formattare

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.