C# 用于在DataTable中添加带百分号的计算列的表达式
我有一个C# 用于在DataTable中添加带百分号的计算列的表达式,c#,winforms,.net-3.5,datatable,calculated-columns,C#,Winforms,.net 3.5,Datatable,Calculated Columns,我有一个DataTable,其中有一列VatRate,从float数据类型的数据库列中检索。现在我想在我的数据表中添加一个计算的数据列,VatRate格式为两位小数,一个%符号后跟一个空格 因此,如果VatRate列中的值为12.5,则computed列中的值应为12.50% 注意: 我想让它显示在Combobox的DisplayMember上,只需将该列绑定到例如DataGrid,然后在网格上定义该列应以固定格式显示的,例如##0.00%,可能会更容易 一般来说:不要试图“强迫”你的数据看起来
DataTable
,其中有一列VatRate
,从float
数据类型的数据库列中检索。现在我想在我的数据表
中添加一个计算的数据列
,VatRate格式为两位小数,一个%
符号后跟一个空格
因此,如果VatRate
列中的值为12.5
,则computed列中的值应为12.50%
注意:
我想让它显示在Combobox的DisplayMember上,只需将该列绑定到例如DataGrid,然后在网格上定义该列应以固定格式显示的,例如##0.00%
,可能会更容易
一般来说:不要试图“强迫”你的数据看起来像它应该的样子——试着在UI上定义显示属性
数据就是数据——不要用显示选项来干扰它——它们属于UI而不是数据
更新:
在ASP.NET中,例如有一个名为DataTextFormatString
的属性,允许您为数据定义单独的显示格式
Winforms类还有一个名为FormatString
的属性,允许您定义数据的外观
更新#2:您正在使用Winforms-因此请将组合框上的格式字符串设置为:
this.comboBox1.FormatString = "#0.00 %";
然后填写值,如0.0875、0.125
等,它们将分别显示为8.75%
和12.50%
。如果格式不成问题,您可以使用如下表达式:
myDataColumn.Expression="Convert(VatRate, 'System.String') + '%'"
但是为什么需要额外的列呢?
难道你不能简单地将一个格式字符串分配到用于在From/Window/Page中显示数据的绑定中,或者在写入某个流时使用一个ToString(…)吗?我想在的DisplayMember上使用它Combobox@ismail:winforms?asp.net?WPF?winforms。很抱歉现在添加了winform标记。vatRatesDataTable.Columns.Add(新数据列(“VatRateWithPercent”,typeof(string),“Convert(VatRate,'System.string')+'%”)代码>工作。但我要小数点后两位。有什么想法吗???或者即使你能给我FormatStringThank,vatRatesDataTable.Columns.Add(新数据列(“VatRateWithPercent”,typeof(string),“Convert(VatRate,'System.string')+'%”)代码>工作。但我要小数点后两位。你有没有读过关于绑定和/或格式的帖子/评论?您应该在演示文稿中格式化数据,而不是存储(即使只是像数据表一样存储在内存中)。如果您仍然希望在列的表达式中使用格式,则可以使用“Len”和“Substring”函数来获得正确的公式,但您将需要多个Convert(…,…)实例,并且将得到一个非常长的表达式。我认为这不是最好的方法,您必须仅在演示步骤中格式化数据。