有一个名为DisplayTable
的班级。稍后绑定到某个观察集合,然后将值填充到datatable
。
我需要表的value列只接受整数,小数,双精度。
public class DisplayTable
{
public string AnalyteName { get; set; }
public string Units { get; set; }
[RegularExpression(@"0-9+(.)", ErrorMessage="This field accept Only numeric values")]
public float ReferenceValue { get; set; }
}
//Binding the class to Collection
public ObservableCollection<DisplayTable> list { get; set; }
// creating an istance to the class
DisplayTable d = new DisplayTable();
d.AnalyteName ="c"
d.Units= "mg"
this.list.Add(d)
table.Columns.Add("Analyte Name");
table.Columns.Add("Units");
table.Columns.Add("Value");
foreach (var item in this.list)
{
drn = table.NewRow();
int col = 0;
drn[col] = item.AnalyteName ;
drn[col + 1] = item.Units;
drn[col + 2] = item.ReferenceValue;
table.Rows.Add(drn);
table.AcceptChanges();
}
dataGrid.ItemsSource = table.DefaultView;
答案 0 :(得分:0)
DataColumn
有一种数据类型,通过它DataType
属性公开。
DataColumnCollection
的~
方法有多个重载,其中一些允许您指定列的数据类型。
您当前使用的重载使用默认数据类型,即字符串
如果要指定其他数据类型,请使用另一个重载:
Add
但是,您感兴趣的是一个可以容纳多种数据类型的列 - 整数,小数倍数和浮点数 - 这些数据类型不可互换。
我选择了decimal
数据类型,因为它比table.Columns.Add("Value", typeof(decimal));
更精确,但是由于其他浮点数据类型(float
之间没有隐式转换, double
)和double
在设置单元格值时,您必须将值显式转换为decimal
:
decimal