展望說事,似乎很奇怪,你所得到的以下行爲:
驗證在某種意義上說,是工作的顯示值前一個£跡象,但是,當我加載數據入電網,並單擊某行的「服務費」的細胞,細胞顯示750.0000,而不僅僅是750或750.00
正確的部分是,你應該把你的貨幣符號像你說的,和格式必須是也不用時在編輯模式下:£750.00
然而另一部分,在編輯模式下時,很奇怪。編輯將真正展示你在你的數據表中列有原始值,但如果它是不是「750.00000000」或「750.00000」,它只會顯示整個數字 - 「750」,而不是,而不是「750.0000」。
在列被設置爲貨幣之前,您在該行中的確切值是多少?
此外,如果你是正確地鉤到ultraGrid1_BeforeCellActivate
事件的UltraGrid,並擁有有像Math.Round
if (e.Cell.Column.Key == "Fee")
{
e.Cell.Value = Math.Round(Convert.ToDecimal(e.Cell.Value), 2);
}
的方法整個號碼後,您會結束,只有2位,而不管具體的DataTable中的值。
您使用的應用程序中的哪種版本的Infragistics的控件?是否有任何其他更改或設置應用於您的UltraGrid?
編輯:
在另一方面,如果你仍然畢竟這些變化遇到相同的行爲,這將意味着,一些系統繼續這樣做,並且仍然顯示小數點後4位,在編輯時模式,以防處理DataType爲Decimal的Data Columns。所以,你將有兩種可能更改:
- 更改「費用」數據列「雙師型」的基本數據類型,你不會有這種行爲了。
如果您不能執行數1,出於某種原因,比你會與「費用」列的MaskInput財產,這將讓你改變你所看到的能力發揮,而在編輯模式,如:
private void ultraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e)
{
e.Layout.Bands[0].Columns["Fee"].Format = "C";
//Set the mask to be in the following format:
e.Layout.Bands[0].Columns["Fee"].MaskInput = "nnnn.nn";
//If you would like to see the £ as well, you could use the one instead:
e.Layout.Bands[0].Columns["Fee"].MaskInput = "£nnnnn.nn";
//If you would like to change the under score (_), with another char like empty space () you could do it like that:
e.Layout.Bands[0].Columns["Fee"].PromptChar = ' ';
}
您好,感謝您的答覆。這個'BeforeCellActivate'方法還沒有解決問題,它仍然顯示爲4位小數。 – Harambe
您是否按照原樣測試了我的整個樣本,或僅嘗試在您的項目中實施它?你確定新的價值真的被縮短了,並且你爲右欄做了轉換嗎? –
我將它實現到我的項目中 - 我沒有使用'Private DataTable'塊,只使用'BeforeCellActivate'方法。我絕對使用正確的列, – Harambe