J'utilise un dataxier.Enval Expression dans un ASP.NET DataGrid, mais je pense que cette question s'applique à la mise en forme de chaîne dans .NET en général. Le client a demandé que si la valeur d'une chaîne est 0, elle ne doit pas être affichée. J'ai le piratage suivant pour accomplir ceci:
<%# IIf(DataBinder.Eval(Container.DataItem, "MSDWhole").Trim = "0", "", DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0}")) %>
4 Réponses :
Vous devez utiliser le séparateur de section , comme ça :
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>
C'est une bonne journée. J'ai appris quelque chose et ça n'a même pas encore 10 ans. J'aimerais pouvoir uppouver deux fois.
Presque à droite, mais N0 est un format standard et vous avez besoin d'un format personnalisé, par exemple. "{0: #, ## 0 ;;}". Vous n'avez pas besoin de mettre un espace dans la troisième section.
Attention, cela ne fonctionnera pas comme vous le pensez: pour msdwhaole! = 0, vous obtiendriez "N
@Joe: Vous DO I> Besoin d'un espace ou d'un '' code> pour le troisième groupe, comme un groupe vide est ignoré. {0: + a; -a;} renvoie + A pour 0. Avec
'' code> Aucune garniture n'est nécessaire.
@Ruben, vous avez raison, il devrait s'agir d'un espace réservé à chiffre de hachage, par ex. {0: #, ## 0 ;; #}
Merci tout pour la discussion. {0: N0 ;; } œuvres. @Joe, votre dernière entrée de commentaire fonctionne également. BTW, cela n'a pas fonctionné si le nombre en étant formaté était une chaîne contenant un nombre. Cela fonctionne pour 0, mais pas "0".
it doubleemitsblankwhenzeroinstringformat = () => string.format ("{0: $ #, 0; $ #, 0; $ #, 0; #}", 0d); code> - le hachage La dernière position fonctionne
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 lors de la liaison comme ceci et à l'intérieur de la fonction permet de formater votre souhait p> p> p>
Compte tenu de la réponse acceptée:
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;;#}") %>
Dave, j'ai essayé cette idée et ça a fonctionné super! La chute de la garniture est définitivement une amélioration. Merci!
Merci pour le formatage du correctif, Nick. Je vois maintenant comment faire ça.