2010-10-13 7 views

risposta

32

La colonna associata deve avere una colonna DataFormatString. Si potrebbe fare qualcosa di simile:

DataFormatString="{0:0.00}" Numeric Custom Format Strings

UPDATE Nel caso di AutoGenerateColumns="true" ... avrei dovuto conoscere più specifiche su quello che stai vincolante, ma qui ci sono alcune strade da esplorare:

  1. non sono sicuro se sarà GridView rispettare la DataFormatAttribute in dati annotazioni. Se si sta vincolando un oggetto e GridView rispetta l'attributo , potrebbe essere una route da percorrere.
  2. Collegare l'evento RowDataBound e ispezionare ciascuna colonna per i potenziali valori decimali e formattare in questo modo.
+0

Ciao, grazie per im reply.but assegnando valore alla GridView dinamicamente, e AutoGenerateColumns = "True" . –

+0

ok, collego DataTable al gridview.In realtà sto associando diversi DataTable allo stesso gridview in base alle Condizioni selezionate dall'utente, ciò significa supponiamo di avere due opzioni nella casella combinata 1.Persons e 2.Products quindi se l'utente seleziona il Persone quindi sto recuperando persone Datatable e associarlo a GridView e se l'utente seleziona i prodotti, allora sto recuperando i prodotti datatable e legandolo a GridView. –

+1

Sembra che potrebbero essere più problemi di quanti ne valga la pena. Puoi avere due GridView, uno configurato come vuoi per Persone e l'altro per Prodotti, e nasconderne uno e mostrare l'altro se necessario? In caso contrario, è comunque possibile ispezionare ogni colonna su RowDataBound e formattare il valore come desiderato. – HackedByChinese

0

Ci sono due semplici modi per formattare le cose in un GridView. Il primo è dato in una risposta precedente - usa DataFormatString. Il secondo, che suona come si applica alla tua situazione, dove stai caricando dinamicamente la griglia, è quello di modificare i dati che entrano nella griglia.

Quindi, anziché restituire un numero e provare a formattarlo, restituire un numero formattato e lasciare che GridView lo visualizzi.

8

è possibile scrivere BoundField in GridView:

<asp:BoundField DataField="amount" DataFormatString="{0:n}" /> 

si può anche scrivere TemplateField in GridView

<asp:TemplateField> 
    <ItemTemplate> 
    <%#Eval("amount","{0:n}")%> 
    </ItemTemplate> 
</asp:TemplateField> 
+1

Questo dovrebbe essere accettato come risposta ... – Waqas

+0

m provare qualcosa come questo - '> e sta visualizzando tutti i valori come 2. dove ho sbagliato? – Silver

2

Questo funziona su una colonna modello, dire che se si vuole un decimale fuori a due posti per un rapporto (come 1: 3)

<%# Eval("somedatacolumn", "1:{0:.##}").ToString() %> 
1

Se si utilizza DataFormatString e non vede m di fare il trucco, aggiungere HtmlEncode = "false", ad esempio:

<asp:BoundField DataField="DateScheduled" HeaderText="Date Created" DataFormatString="{0:D}" HtmlEncode="false"/> // date format 
<asp:BoundField DataField="Amount" HeaderText="Pay This Amount" DataFormatString="{0:F}" HtmlEncode="false"/> // number format 
3

Si può fare DataFormatString="{0:n2}" nel vostro BoundField