ASP.NET - отрицательные числа в скобках - PullRequest
4 голосов
/ 07 января 2009

Мое приложение в настоящее время отображает отрицательные числа как -1. Пользователи изменили требования (просто для разнообразия!), И теперь мы должны будем отображать числа в виде (1). Могу ли я включить это для всего приложения, скажем, изменение web.config или даже приложения CultureInfo? Есть ли побочный эффект от этого, поскольку у нас много страниц, которые содержат валидаторы чисел?

Спасибо!

Ответы [ 8 ]

6 голосов
/ 07 января 2009

Для валюты это действительно легко:

String.Format("{0:C}", value)

Это будет использовать информацию о культуре для системы.

Для нормальных чисел, привязанных к данным, используйте Образец Марка Глори .

MSDN Статья

3 голосов
/ 07 января 2009

Я бы использовал форматирование строки. Внесение изменений в конфигурацию приложения для удовлетворения требований пользовательского интерфейса является сложным. SteveX написал отличное сообщение в блоге о форматировании строк. Он также совместим с разметкой (aspx), а не только в коде.

Из своего поста:

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.

Это не совсем то, что вы хотите, но это близко.

1 голос
/ 05 сентября 2011

Проверьте это .. http://msdn.microsoft.com/en-us/library/91fwbcsb.aspx

Преобразует строковое представление числа в указанном стиле в его десятичный эквивалент.

0 голосов
/ 04 марта 2011

Это работает.

DataFormatString="{0:c0}"
  • Нагативные суммы в парантезе
  • Разделитель тысяч - запятая
  • $ символ впереди
0 голосов
/ 07 января 2009

У меня есть следующая страница, добавленная в закладки для форматирования строки: http://idunno.org/archive/2004/14/01/122.aspx

Примерно на полпути, он дает ответ:

String.Format("{0:£#,##0.00;(£#,##0.00);Nothing}", value);

Чтобы ответить на ваш другой вопрос, я бы не стал изменять app.config, чтобы сделать его глобальным по причинам, указанным в других ответах.

0 голосов
/ 07 января 2009

Отображаете ли вы свои данные в Gridview / Datagrids? Если это так, то форматирование может быть применено для каждого столбца, например:

<asp:BoundField DataFormatString="{##;(##)}"/>

Однако это работает только с целыми числами ...

0 голосов
/ 07 января 2009
String.Format(”{0:f;(f);0”, -1);
0 голосов
/ 07 января 2009

Вы всегда можете написать свой собственный метод ToString () в качестве метода расширения, но, как вы упоминали, использование CultureInfo, вероятно, лучше. Посмотрите здесь:

http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.numbernegativepattern.aspx

...