2009-01-07 65 views
4

我的應用程序當前正在將負數顯示爲-1。用戶已經改變了需求(只是爲了改變!),現在我們將不得不顯示數字爲(1)。 我是否可以啓用整個應用程序說改變web.config甚至應用程序的CultureInfo?這樣做有什麼副作用嗎,因爲我們有很多包含數字驗證器的頁面?ASP.NET - 括號中的負數

謝謝!

+0

順便說一句 - 這不是一個像它看起來那麼隨機的請求。在一些會計記法中,parens是標準的而不是負面的標誌。 – 2009-01-07 01:41:45

+0

它在會計中幾乎是標準的show()而不是負數。 – 2009-01-07 02:56:04

回答

6

對於貨幣它是很容易:

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

這將使用該系統的文化信息。

對於數據綁定的正常號碼,請使用Mark Glorie's sample

MSDN Article

0

您可以隨時編寫自己的自定義ToString()方法作爲擴展方法,但正如您所說,使用CultureInfo可能會更好。看看這裏:

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

+0

「overloading」的擴展方法ToString()永遠不會被調用 - C#編譯器更喜歡通過擴展方法調用實際實例方法,並且由於System.Object定義了ToString(),所以您幾乎陷入了困境。 – 2009-01-07 01:30:03

3

我會使用字符串格式化。對應用程序的配置進行更改以滿足用戶界面要求非常重要。 SteveX寫了一個關於字符串格式的great blog post。它也與標記(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. 

這不正是你想要的,但已經很接近了。

+0

但是當你的應用程序只有屏幕處理計算和東西,即會計應用程序時呢?你會在所有屏幕上改變它嗎?如果需求再次改變? – 2009-01-07 01:30:33

+0

此應用程序是否曾在不同的國家運行?那麼你需要擔心本地化,這帶來了新的轉折。如果你真的想在你的應用中有一個可以讓你回到格式化字符串的地方,那很好,在靜態類中使用一個方法。但是從標記中調用該方法非常困難。 – jcollum 2009-01-07 02:07:57

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

你在GridView/Datagrids中顯示數據嗎?如果是的話可以格式化每綁定列應用,像:

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

這僅適用於但是整數...

0

我有書籤做字符串格式化以下頁面:http://idunno.org/archive/2004/14/01/122.aspx

大約一半下來,它給出了答案:

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

爲了回答您的其他問題,我不會修改的app.config使其g ^因爲其他答案中給出的理由,我們可以說是lobal。

0

這是有效的。

DataFormatString="{0:c0}" 
  • 性否定金額在paranthesis
  • 千分體 - 逗號
  • $符號前