我有一个Infragistics UltraWinGrid绑定到一个数据源,其中包含金额(十进制)和货币(字符串)。我需要显示格式化的金额和货币:
Data source: Grid contents:
Amount Currency Amount
12.34 EUR EUR 12.34
22.33 USD USD 22.33
我正在考虑3个选项:
答案 0 :(得分:1)
我使用EditorWithText
使用选项2完成了它。我连续有两列 - 十进制Value
列和字符串FormatString
列。以下是我在Value
列中进行独立格式化所做的工作。
grid.InitializeRow += (sender, e) =>
{
DefaultEditorOwnerSettings settings = new DefaultEditorOwnerSettings();
settings.DataType = typeof(Decimal);
settings.Format = (string)e.Row.Cells["FormatString"].Value;
EditorWithText editor = new EditorWithText(new DefaultEditorOwner(settings));
e.Row.Cells["Value"].Editor = editor;
}
答案 1 :(得分:0)
Squillman的答案很好。
不幸的是,代码为每一行创建了一个EditorWithText实例。
这就是为什么我加上这个:
Dictionary<string, EditorWithText> dic = new Dictionary<string, EditorWithText>();
EditorWithText getEditor(string format)
{
EditorWithText ed;
if (!dic.TryGetValue(format, out ed))
{
ed = new EditorWithText(
new DefaultEditorOwner(
new DefaultEditorOwnerSettings { Format = format }));
dic.Add(format, ed);
}
return ed;
}
因此现有格式只有一个EditorWithText实例。
grid.InitializeRow += (sender, e) =>
{
e.Row.Cells["Value"].Editor = getEditor((string)e.Row.Cells["FormatString"].Value);
}