ASP.NET - Os números negativos em parênteses
-
03-07-2019 - |
Pergunta
A minha aplicação está a ser apresentado números negativos como -1. Os usuários mudaram os requisitos (apenas para uma mudança!) E agora vamos ter de exibir os números como (1). Posso permitir que para toda a aplicação digamos alterando o web.config ou mesmo CultureInfo do aplicativo? Existe algum efeito colateral de fazer isso, já que temos muitas páginas que contêm validadores número?
Obrigado!
Solução
Para moeda é realmente fácil:
String.Format("{0:C}", value)
Isto irá usar a informação cultura para o sistema.
Para números normais sendo dados vinculados, use amostra do Mark Glorie .
Outras dicas
Eu usaria string de formatação. Fazer uma mudança de configuração do aplicativo para satisfazer uma exigência UI é entregou-pesado. SteveX escreveu um grande post sobre string de formatação. É também compatível com marcação (aspx) em vez de apenas relevante no código.
De seu posto:
String.Format(”{0:$#,##0.00;($#,##0.00);Zero}”, value);
This will output “$1,240.00″ if passed 1243.50. It will output the
same format but in parentheses if the number is negative, and will
output the string “Zero” if the number is zero.
O que não é exatamente o que você quer, mas é perto.
Marque esta .. http://msdn.microsoft.com/en-us/library/91fwbcsb.aspx
Converte a representação de cadeia de um número em um estilo especificado para seu equivalente decimal.
Você pode sempre escrever o seu próprio método ToString () personalizada como um método de extensão, mas, como você mencionou, usando CultureInfo é provavelmente melhor. Dê uma olhada aqui:
Eu tenho a seguinte página marcada para fazer corda formatação: http: //idunno.org/archive/2004/14/01/122.aspx
Sobre a meio caminho, ele dá a resposta:
String.Format("{0:£#,##0.00;(£#,##0.00);Nothing}", value);
Para responder à sua outra pergunta, eu não iria alterar a app.config para torná-lo global, por razões dadas nas outras respostas.
String.Format(”{0:f;(f);0”, -1);
Isso funciona.
DataFormatString="{0:c0}"
- valores negativos entre parênteses
- Thousand separater - vírgula
- $ símbolo na frente
Você está exibindo seus dados em Gridview / DataGrids? Se sim, então a formatação pode ser aplicada per-bound coluna, algo como:
<asp:BoundField DataFormatString="{##;(##)}"/>
Isso só funciona com inteiros no entanto ...