Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于在DataTable中添加带百分号的计算列的表达式_C#_Winforms_.net 3.5_Datatable_Calculated Columns - Fatal编程技术网

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(…,…)实例,并且将得到一个非常长的表达式。我认为这不是最好的方法,您必须仅在演示步骤中格式化数据。