Вопрос

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

Спасибо!

Это было полезно?

Решение

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

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

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

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

Статья MSDN

Другие советы

Я бы использовал форматирование строк. Внесение изменений в конфигурацию приложения для удовлетворения требований пользовательского интерфейса является сложным. 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.

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

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

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

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

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

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

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

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

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

String.Format(”{0:f;(f);0”, -1);

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

DataFormatString="{0:c0}"
  • Отрицательные количества в парантезе
  • Разделитель тысячи - запятая
  • символ $ впереди

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top