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)?

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

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.

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

scroll top