2010-10-13 20 views

Odpowiedz

32

W powiązanej kolumnie powinna znajdować się kolumna DataFormatString. Można zrobić coś takiego:

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

UPDATE W przypadku AutoGenerateColumns="true" ... Musiałbym poznać więcej szczegółów na temat tego, czego wiążące, ale oto kilka sposobów spełniania zbadać:

  1. nie jestem pewien, czy GridView będzie respektować DataFormatAttribute w danych adnotacji. Jeśli obiekt jest wiążący, a GridView respektuje ten atrybut , może to oznaczać jedną trasę, którą można przejść .
  2. Połączyć zdarzenie RowDataBound i sprawdzić każdą kolumnę pod kątem potencjalnych wartości dziesiętnych i sformatować w ten sposób.
+0

cześć, dzięki za reply.but im przypisywania wartości do GridView dynamicznie i AutoGenerateColumns = "True" . –

+0

ok, wiążę DataTable z gridview.Aktualnie wiążę różne DataTable do tego samego gridview zgodnie z warunkami, które wybrał użytkownik, oznacza zakładam, że mam dwie opcje w polu kombi 1.Persons i 2.Products , więc jeśli użytkownik wybierze Osobiście pobieram Dane, które można datować, i wiążę je z GridView, a jeśli użytkownik wybierze Produkty, wówczas pobieram Produkty, które można datować i wiążę z GridView. –

+1

Wydaje się, że to może być więcej kłopotu niż jest warte. Czy możesz mieć dwa widoki GridView, jeden skonfigurowany tak, jak chcesz dla Osób, a drugi dla Produktów, a po prostu ukryć jeden i pokazać drugi w razie potrzeby? Jeśli nie, prawdopodobnie możesz sprawdzić każdą kolumnę w wierszu RowDataBound i sformatować wartość, jak chcesz. – HackedByChinese

0

Istnieją dwa proste sposoby formatowania rzeczy w widoku GridView. Pierwsza jest podana w poprzedniej odpowiedzi - użyj DataFormatString. Druga, która brzmi jak ta, odnosi się do twojej sytuacji, w której dynamicznie ładujesz sieć, jest zmiana danych przesyłanych do sieci.

Zamiast zwracać liczbę i próbować ją sformatować, zwróć sformatowaną liczbę i pozwól, aby GridView ją wyświetlił.

8

można napisać BoundField w GridView:

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

można również napisać TemplateField w GridView

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

To powinno być zaakceptowane jako odpowiedź ... – Waqas

+0

m próbuje czegoś takiego - '> i wyświetla wszystkie wartości jako 2. gdzie się mylę? – Silver

2

Działa to na kolumnie szablonu powiedzieć, jeśli chcesz po przecinku z dokładnością do dwóch miejsc po stosunek (jak 1: 3)

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

Jeśli używasz DataFormatString i nie widzi m się robi sztuczki, dodać HtmlEncode = "false", na przykład:

<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

Można zrobić DataFormatString="{0:n2}" w boundfield

Powiązane problemy