Usando a formatação .NET String, como faço para formatar uma string para exibir em branco (String vazia) para zero (0)?
-
21-09-2019 - |
Pergunta
Estou usando uma expressão de banco de dados.eval em um datagrid ASP.NET, mas acho que essa pergunta se aplica à formatação da string no .NET em geral. O cliente solicitou que, se o valor de uma string for 0, não deve ser exibido. Eu tenho o seguinte hack para conseguir isso:
<%# IIf(DataBinder.Eval(Container.DataItem, "MSDWhole").Trim = "0", "",
DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0}")) %>
Eu gostaria de mudar o {0:N0}
Formatando a expressão para que eu possa eliminar a declaração IIF, mas não consigo encontrar nada que funcione.
Solução
Você precisa usar o Seção separador, assim:
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>
Observe que apenas a seção negativa pode estar vazia, então preciso colocar um espaço no 0
seção. (Leia o documentação)
Outras dicas
Dada a resposta aceita:
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>
O espaço A é colocado na 3ª posição, no entanto, colocando um #
na terceira posição, eliminará a necessidade de ligar Trim()
.
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;;#}") %>
Use um método personalizado.
public static string MyFormat(double value) {
return value == 0 ? "" : value.ToString("0");
}
<%# MyFormat(Convert.ToDouble(Eval("MSDWhole"))) %>
Tente chamar uma função enquanto vincula como este
<%# MyFunction( DataBinder.Eval(Container.DataItem, "MSDWhole") ) %>
e dentro da função faz a formatação que você deseja