Mit .NET-String-Formatierung, wie formatiere ich eine Zeichenfolge Anzeige leer (leere Zeichenkette) für Null (0)?
-
21-09-2019 - |
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.
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