多语言展示
当前在线:668今日阅读:75今日分享:44

使用ComponenetOne IDataErrorInfo实现数据校验

IDataErrorInfo接口提供了校验数据和必要验证信息的能力,用户可以做接口绑定。本文就让我们了解如何在C1DataGrid中使用IDataErrorInfo和校验数据。
工具/原料

ComponenetOne

方法/步骤
1

C1DataGrid很容易的可以添加手动的行校验。这对于绑定到一个简单的集合来说,是非常有用的。 如下是一个简单的继承自IDataErrorInfode的类。 public   class Person : IDataErrorInfo {    private int age;    private string name;    public int Age    {       get { return age; }       set { age = value; }    }    public string Name    {       get { return name; }       set { name = value; }    }    public string Error    {       get       {          return null;       }    }    public string this[string name]    {       get       {          string result = null;          if (name == 'Age')          {             if (this.age < 20 || this.age   > 50)             {                   result = 'Age must be   less than 50 and greater than 20';             }          }          if (name == 'Name')          {             if (this.name.Length < 3)                result = 'Too Small   Name';          }          return result;       }    } }

2

重要的一点就是在列绑定对象中设置ValidatesOnDataErrors 属性为true。 如下就是C1DataGrid在XAML在手动列种的定义。      

3

我们在C1DataGrid的'CommittingEdit'事件中,手动的添加行校验的结果。c1DataGrid1.CommittingEdit   += (s, e) => {    if   (Validation.GetHasError(e.EditingElement))    {       var ve =   Validation.GetErrors(e.EditingElement);       e.Row.ValidationResults.Add(new   System.ComponentModel.DataAnnotations.ValidationResult((ve[0]).ErrorContent.ToString(),   new string[] { e.Column.Name }));    }    else    {       foreach (var result in   e.Row.ValidationResults)       {          if (result.MemberNames.First() ==   e.Column.Name)          {               e.Row.ValidationResults.Remove(result);             break;          }       }    } };

推荐信息