Mit .NET-String-Formatierung, wie formatiere ich eine Zeichenfolge Anzeige leer (leere Zeichenkette) für Null (0)?

StackOverflow https://stackoverflow.com/questions/2282573

Frage

Ich bin mit einem DataBinder.Eval Ausdruck in einer ASP.NET Datagrid, aber ich denke, diese Frage zu String gilt im Allgemeinen in .NET Formatierung. Der Kunde hat beantragt, dass, wenn der Wert einer Zeichenkette 0 ist, ist es nicht angezeigt werden soll. Ich habe den folgenden Hack um dies zu erreichen:

<%# IIf(DataBinder.Eval(Container.DataItem, "MSDWhole").Trim = "0", "", 
    DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0}"))  %>

Ich mag die {0:N0} Ausdruck ändern Formatierung, so dass ich die Anweisung von IIF beseitigen kann, kann aber nichts, dass die Arbeiten finden.

War es hilfreich?

Lösung

Sie müssen den Abschnitt Separator verwenden, wie dies :

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>

Beachten Sie, dass nur der negativer Abschnitt leer sein, so dass ich einen Raum, in dem 0 Abschnitt setzen muß. (Lesen Sie die Dokumentation )

Andere Tipps

In Anbetracht der akzeptierte Antwort:

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>

Der Raum, in dem der dritten Position gebracht wird, jedoch eine # in der dritten Position platziert wird die Notwendigkeit des Anruf Trim() beseitigen.

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;;#}") %>

Verwenden Sie eine benutzerdefinierte Methode.

public static string MyFormat(double value) {       
    return value == 0 ? "" : value.ToString("0");
}

<%# MyFormat(Convert.ToDouble(Eval("MSDWhole"))) %>

Versuchen Sie, eine Funktion aufzurufen, während ähnliche

Bindung
<%# MyFunction( DataBinder.Eval(Container.DataItem, "MSDWhole") ) %>

und innerhalb der Funktion macht die Formatierung, die Sie wollen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top