Usando a formatação .NET String, como faço para formatar uma string para exibir em branco (String vazia) para zero (0)?

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

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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top