使DataTable的列仅接受数值

时间:2018-04-12 12:46:15

标签: c#

有一个名为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;

1 个答案:

答案 0 :(得分:0)

DataColumn有一种数据类型,通过它DataType属性公开。
DataColumnCollection~方法有多个重载,其中一些允许您指定列的数据类型。
您当前使用的重载使用默认数据类型,即字符串 如果要指定其他数据类型,请使用另一个重载:

Add

但是,您感兴趣的是一个可以容纳多种数据类型的列 - 整数,小数倍数和浮点数 - 这些数据类型不可互换。

我选择了decimal数据类型,因为它比table.Columns.Add("Value", typeof(decimal)); 更精确,但是由于其他浮点数据类型(float之间没有隐式转换, double)和double在设置单元格值时,您必须将值显式转换为decimal

decimal