2011-03-29 14 views
2

我有一個gridview,我正在爲會計人員填充數據,他們想要我設置貨幣值的格式它們顯示沒有$的,用逗號分隔數字和與由()

包圍負數例如:

  12345.67 = 12,345.67
-12345.67 =(12,345.67)

我已發現許多圍繞互聯網的例子,讓我接近但有ei沒有()周圍的消極或有一個$包括。

+0

我正在嘗試解決方案,因爲我的查詢可能已經相當複雜了,並且已經傾向於花費40多秒才能返回一個相當稀疏的測試系統的結果,我不能確定是否會在sql server上加載任何負載我們一旦上線需要多長時間。 – kaelle 2011-03-29 20:15:48

+0

然後你應該優化你的查詢,但是一個簡單的'case'不會使性能惡化。 – 2011-03-29 20:29:44

+0

@蒂姆謝謝,這是很好的建議... – kaelle 2011-03-29 21:01:20

回答

8

所以我想基本上問題是,什麼是String.Format()調用,我將使貨幣值格式化爲上述要求。

搞亂了一些自定義格式後,我想出了它!

var amt = new BoundField(); 
amt.DataFormatString = "{0:#,##0.00;(#,##0.00);0}"; 

工程就像一個魅力。

+1

也可以作爲asp:BoundField的聲明屬性! – brianary 2011-11-02 14:52:26

1

如果它僅僅是沒有()的數字,那麼它就像{0:N}一樣簡單,但是因爲您需要()負數的數值,所以BoundField不是您的選擇,除非您想在sql級別或代碼隱藏在綁定到該字段之前直接操作datasouce。

下一個選項是使用帶有標籤的TemplateField,並在代碼隱藏的GV RowDataBound事件中相應地設置相應的集合。