En utilisant la mise en forme de chaîne .NET, comment formater une chaîne vide pour afficher (chaîne vide) pour zéro (0)?
-
21-09-2019 - |
Question
J'utilise une expression DataBinder.Eval dans un ASP.NET DataGrid, mais je pense que cette question s'applique à la mise en forme chaîne dans .NET en général. Le client a demandé que si la valeur d'une chaîne est 0, il ne doit pas être affiché. J'ai le hack pour accomplir ceci:
<%# IIf(DataBinder.Eval(Container.DataItem, "MSDWhole").Trim = "0", "",
DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0}")) %>
Je voudrais changer la mise en forme {0:N0}
expression afin que je puisse éliminer la déclaration IIf, mais ne peut pas trouver quelque chose qui fonctionne.
La solution
Vous devez utiliser le séparateur de section , comme celui-ci :
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>
Notez que seule la section négative peut être vide, donc je dois mettre un espace dans la section 0
. (Lisez la documentation )
Autres conseils
Compte tenu de la réponse acceptée:
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>
L'espace est placé dans la 3ème position mais placer un #
dans la troisième position éliminera la nécessité d'appeler Trim()
.
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;;#}") %>
Utilisez une méthode personnalisée.
public static string MyFormat(double value) {
return value == 0 ? "" : value.ToString("0");
}
<%# MyFormat(Convert.ToDouble(Eval("MSDWhole"))) %>
Essayez d'appeler une fonction tout en se liant comme ceci
<%# MyFunction( DataBinder.Eval(Container.DataItem, "MSDWhole") ) %>
et à l'intérieur de la fonction faire la mise en forme que vous voulez