6
votes

Utilisation de la formatage .NET String, comment formater une chaîne pour afficher vide (String vide) pour zéro (0)?

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}"))  %>


1 commentaires

Merci pour le formatage du correctif, Nick. Je vois maintenant comment faire ça.


4 Réponses :


10
votes

Vous devez utiliser le séparateur de section , comme ça :

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


7 commentaires

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 ". N0 n'est pas pris en charge avec des séparateurs de groupe. Utiliser "{0: #, 0 ;;}"


@Joe: Vous DO Besoin d'un espace ou d'un '' pour le troisième groupe, comme un groupe vide est ignoré. {0: + a; -a;} renvoie + A pour 0. Avec '' 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); - le hachage La dernière position fonctionne



0
votes

Utilisez une méthode personnalisée.

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

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


0 commentaires

0
votes

Essayez d'appeler une fonction lors de la liaison comme ceci xxx

et à l'intérieur de la fonction permet de formater votre souhait


0 commentaires

3
votes

Compte tenu de la réponse acceptée:

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


1 commentaires

Dave, j'ai essayé cette idée et ça a fonctionné super! La chute de la garniture est définitivement une amélioration. Merci!