Non far Visulizzare lo zero

mercoledì 29 ottobre 2008 - 19.46

gae58 Profilo | Senior Member

salve,

ho una grid con varie colonne. Una di queste visualizza i numeri.

Vorrei che quando il numero è zero vuoto o null, non visualizzi nulla.

Si può fare?

grazie


Gaetano

Lanello Profilo | Senior Member

puoi fare in molti modi, il più semplice è quello di cancellare lo 0 dopo aver fatto il fill (se usi data binding) o comunque alla fine del popolamento della tabella, scorri tutte le righe e con una if cambi il valore delle celle che hanno come valore 0, null o nothing

del tipo:

for each riga as datagridviewrow in griglia
if riga.cells("nomecolonna").value=0 then riga.cells("nomecolonna").value=""
if riga.cells("nomecolonna").value=null then riga.cells("nomecolonna").value=""
if riga.cells("nomecolonna").value=nothing then riga.cells("nomecolonna").value=""
next

se in più non vuoi che l'utente veda che gli zeri prima appaiano e poi vengano cancellati puoi usare il

griglia.suspendlayout (spenge il ridisegnamento automatico del layout della griglia)

prima del fill

e alla fine della routine dopo aver cancellato gli zeri

griglia.resumelayout (riaccende ed esegue il ridisegnamento della griglia)



ho scritto il codice al volo non l'ho controllato, vedi se i 3 if vanno bene :P

----------------------------------------------------------------------
http://www.flashinlabs.biz o .com o .net o .it fate voi :P

gae58 Profilo | Senior Member

ti ringrazio della risposta, ma non c'è qualcosa che si possa usare nella FormatString che tu sappia?


Gaetano

balfaz Profilo | Expert

prova con questo format

String.Format("{0:€#,##0.00;(€#,##0.00);Nothing}", value);

spero ti serva

"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

gae58 Profilo | Senior Member

grazie balfast,

per aiutare quache altro che ne dovesse avere bisogno, basta usare:
"{0:#}"
in quanto il cancelletto è sufficiente per non far visualizzare lo zero.

Per approfondire la mia istruzione, potresti spiegarmi meglio il codice:
String.Format("{0:€#,##0.00;(€#,##0.00);Nothing}", value);

Il primo pezzo:
{0:€#,##0.00; significa che in ogni caso deve visualizzare lo zero intero e poi anche i 2 zero decimali, anche se non presente.

La parte successiva, quello dopo il punto e virgola e poi Nothing, che significa?

grazie


Gaetano

gae58 Profilo | Senior Member

ciao Ianello,

il codice che mi hai postato è interessante, ma non ho capito dove inserire il codice che mi hai postato:
for each riga as datagridviewrow in griglia
if riga.cells("nomecolonna").value=0 then riga.cells("nomecolonna").value=""
if riga.cells("nomecolonna").value=null then riga.cells("nomecolonna").value=""
if riga.cells("nomecolonna").value=nothing then riga.cells("nomecolonna").value=""
next
soprattutto in che parte.

grazie

Gaetano

gae58 Profilo | Senior Member

, scusate, mi devo correggere. Localmente funziona. L'ho messo sul sito e la formattazione non funziona +, è come se non ci fosse.

QUalche consiglio sul perchè non venga visualizzata bene?



>grazie balfast,
>
>per aiutare quache altro che ne dovesse avere bisogno, basta
>usare:
>"{0:#}"
>in quanto il cancelletto è sufficiente per non far visualizzare
>lo zero.
>
>Per approfondire la mia istruzione, potresti spiegarmi meglio
>il codice:
>String.Format("{0:€#,##0.00;(€#,##0.00);Nothing}", value);
>
>Il primo pezzo:
>{0:€#,##0.00; significa che in ogni caso deve visualizzare lo
>zero intero e poi anche i 2 zero decimali, anche se non presente.
>
>La parte successiva, quello dopo il punto e virgola e poi Nothing,
>che significa?
>
>grazie
>
>
>Gaetano

Gaetano

Lanello Profilo | Senior Member

>ciao Ianello,

Lanello è una L minuscola

>il codice che mi hai postato è interessante, ma non ho capito
>dove inserire il codice che mi hai postato:

dopo che hai fatto il fill (se utilizzi il databinding), alla fine insomma della routine con la quale fai l'inserimento dei dati nella tabella.

>for each riga as datagridviewrow in griglia
>if riga.cells("nomecolonna").value=0 then riga.cells("nomecolonna").value=""
>if riga.cells("nomecolonna").value=null then riga.cells("nomecolonna").value=""
>if riga.cells("nomecolonna").value=nothing then riga.cells("nomecolonna").value=""
>next
>
>soprattutto in che parte.

proprio come ultimissima cosa prima di dare all'utente il controllo dell'interfaccia.

>grazie

figurati
----------------------------------------------------------------------
http://www.flashinlabs.biz o .com o .net o .it fate voi :P

gae58 Profilo | Senior Member

scusa per la svista Lanello.

Uso il gridView con l'SqlDataSource

grazie


Gaetano

Lanello Profilo | Senior Member

>scusa per la svista Lanello.

ma figurati quando mi sono registrato la prima volta ho scritto la L minuscola e questo carattere inganna un po

>Uso il gridView con l'SqlDataSource

perfetto... nel tuo codice ad un certo punto avrai una riga con scritto

nomedeltuodatagrid.Fill("nomedeltuodatasource")

il mio codice lo devi mettere subito dopo.

>grazie

figurati
----------------------------------------------------------------------
http://www.flashinlabs.biz o .com o .net o .it fate voi :P

gae58 Profilo | Senior Member

provo e ti faccio sapere


Gaetano

balfaz Profilo | Expert

tu stai pubblicando in una webfarm o il server ce l'hai a casa??
fai questa prova (io ho fatto il codice in Vb)

Dim ci As CultureInfo = New CultureInfo("it-IT")
dopodiché nella fai
ValoreDB.ToString(ci)

vediamo un po,
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

gae58 Profilo | Senior Member

ciao

Ho uno spazio su aruba. Nel file config ho già messo la culture.
La cosa strana è che sul PC locale con VS funziona, mentre se posto la pagina aspx sul server di aruba non mi funziona+.
Lo stesso se uso string.format per la delimitazione delle virgole per i numeri


Gaetano

balfaz Profilo | Expert

mi puoi mandare la riga, solo la riga esatta che usi nella GVw, cosi lo guardiamo un po
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

gae58 Profilo | Senior Member

Con questo comando in VWD non mi visualizza lo zero
DataFormatString="{0:#}"


Gaetano

balfaz Profilo | Expert

cosa fai di especiale con questo campo, altrimenti lo facciamo diventare un ItemTemplate, cosa ti sembra??
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

gae58 Profilo | Senior Member

è un campo numerico di una tabella collegata alla gridView.

La cosa che non capisco è perchè non funziona sul server Aruba.
Cambiandolo in template in cosa differisce?


Gaetano

balfaz Profilo | Expert

con il template puoi fare direttamente la formattazione direttamente sul risultato della query e non dover usare al 100% le automazione di questi dannati controlli che a me in particolare non piacciono (come te ne sarai già accorto)

ricordati che loro nei sui server usano delle configurazioni standard che possono affettare il tuo programma, per esempio si usi il comune e semplice "{0:c}" vedrai che funziona, ma lo so comparirà lo zero.

anzi fai un piccolo intervento nell'evento rowdatabound del tuo gridview, è lì fai la formattazione del tuo campo in questa maniera

If e.Row.RowType = DataControlRowType.DataRow Then
If DataBinder.Eval(e.Row.DataItem, "prezzo") <= 0 Then
e.Row.Cells(2).Text = "SENZA PREZZO, BIANCO, NULL, trattini, at "
Else
e.Row.Cells(2).Text = String.Format("{0:c}", Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "prezzo"))
End If

esperiamo ti serva, è una maniera veloce di sistemare questo inconveniente, ma comunque non so se ti piace
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5