zoukankan      html  css  js  c++  java
  • 关于 System.ComponentModel.IDataErrorInfo


    先介绍这个IDataErrorInfo接口,定义如下:

    namespace System.ComponentModel
    {
        
    /// <summary>Provides the functionality to offer custom error information that a user interface can bind to.</summary>
        [System.Reflection.DefaultMemberAttribute("Item")]
        
    public interface IDataErrorInfo
        
    {
            
    /// <summary>Gets an error message indicating what is wrong with this object.</summary>
            
    /// <returns>An error message indicating what is wrong with this object. The default is an empty string ("").</returns>

            string Error get; }
            
    string this[string columnName] get; }
        }

    }

    Error是你的对象本身的错误描述,通过this可以返回或者设置某个属性(字段)的错误信息。
    很早以前就在载体中实现了 IDataErrorInfo ,但一直有个头大的问题,也没有时间细看,就是我修改了对象的错误信息,如何让外界知道我的这个列的错误信息改变了。
    今天有时间看看。NET的实现,原来他是触发了这个属性(字段)的值改变事件,也就是他认为是数据发生了改变,于是自己加入代码很容易实现了,但要记得在ClearErrors也触发一下。
            public void SetError(string columnName,string errorInfo)
            
    {
                
    if (columnName == null || columnName.Equals(string.Empty))
                    _rowError 
    = errorInfo;
                
    else
                
    {
                    Errors[columnName] 
    = errorInfo;
                    OnPropertyChanged(
    new PropertyChangedEventArgs(columnName));//触发事件以便通知界面改变显示
                }

            }
    差点忘记说最重要的事情了,为什么要实现这个接口呢?
    如果你实现了这个接口,你的载体绑定到界面时,你也可以像DataRow一样,在检查数据不正确时,调用SetError设置错误信息,使用系统默认的错误提示控件就可以显示自动显示错误了。
  • 相关阅读:
    grunt安装
    RequireJS实例分析
    Linux下解压rar文件
    windows(64位)下使用curl命令
    RequireJS学习资料汇总
    Linux下firefox安装flash player插件
    caj转pdf——包含下载链接
    《社会化营销:人人参与的营销力量》—— 读后总结
    《税的真相》—— 读后总结
    基于代理的数据库分库分表框架 Mycat实践
  • 原文地址:https://www.cnblogs.com/tansm/p/89972.html
Copyright © 2011-2022 走看看