当前位置: 代码迷 >> C# >> 用List<T>做DataGridView 的数据源时,怎么查询被修改的对象
  详细解决方案

用List<T>做DataGridView 的数据源时,怎么查询被修改的对象

热度:347   发布时间:2016-05-05 04:41:17.0
用List<T>做DataGridView 的数据源时,如何查询被修改的对象?
本帖最后由 csz_1987 于 2015-02-03 16:37:22 编辑
用DataTable做DataGridView的数据源时
DataGridView内做的增、删、改都可以通过DataTable.Select(String, String, DataViewRowState) 方法得到修改的行。

如果用List<T>来做DataGridView的数据源,当DataGridView内的数据被编辑后,是否也可以实现或通过别的组件搭配使用实现类似的操作记录?
------解决思路----------------------
不能
不仅无法得到被修改的list内容
而且如果list内容在外部被修改,也不会通知DataGridView刷新数据
------解决思路----------------------
各有各的用处,不能说哪一种就更好
实体类是强类型,DataTable是弱类型,会产生装箱拆箱的问题,而且弱类型对于团队合作很不利,别人不仔细看你的代码逻辑都不知道里面打底放了啥玩意,你自己时间长了可能也不记得里面到底放了啥玩意,到底有几列,都是什么类型
------解决思路----------------------
让类继承自  INotifyPropertyChanged 接口,并实现PropertyChanged方法。
例如属性Name的更改,

private string _name;

        public string Name
        {
            get { return _name; }
            set
            {
                _name = value;
                OnChangedProperty("Name");
            }
        }

绑定到控件上指定的列。