为了账号安全,请及时绑定邮箱和手机立即绑定

使DataTable的列仅接受数字值

使DataTable的列仅接受数字值

C#
RISEBY 2021-04-09 14:25:10
有一个叫的课程DisplayTable。以后绑定到一些观察Collection,然后将值填充到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 Collectionpublic ObservableCollection<DisplayTable> list { get; set; }// creating an istance to the classDisplayTable 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 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

一个DataColumn有一个数据类型,通过它的暴露DataType属性。

的Add方法DataColumnCollection有几个重载,其中一些重载允许您指定列的数据类型。

您当前使用的重载使用默认数据类型,它是一个字符串。

如果要指定其他数据类型,请使用另一个重载:


table.Columns.Add("Value", typeof(decimal));

但是,您对可以容纳多种数据类型(整数,小数双精度和浮点型)的列感兴趣,并且这些数据类型不可互换。


我选择了decimal数据类型,因为它比a更为准确double,但是由于其他浮点数据类型(float,double)之间没有隐式转换,因此在设置单元格值时decimal必须将值显式转换为decimal:


  foreach (var item in this.list)

  {

      drn = table.NewRow();

      int col = 0;

      drn[col] = item.AnalyteName ;

      drn[col + 1] = item.Units;

      drn[col + 2] = (decimal) item.ReferenceValue;

      table.Rows.Add(drn);

      table.AcceptChanges();

 }


查看完整回答
反对 回复 2021-04-17
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信