C#中序列化实现深拷贝,实现DataGridView初始化刷新
2015-09-01 09:51
489 查看
winfrom中DataGridView在的单元格在编辑时候会修改它的数据源的,如果我们遇到这样一种情景,刷新数据源到原始状态,这个时候要么数据源的重新获取绑定,要么通过拷贝一份原始档的数据再绑定处理,这里介绍拷贝方式处理。大致代码如下:
1.目标对需要序列化,并实现ICloneable 接口:
3.通过拷贝一份数据来达到刷新的目的:
1.目标对需要序列化,并实现ICloneable 接口:
[Serializable] public class DtoColumn : ICloneable2.实现接口方法Clone:
public object Clone() { using (MemoryStream ms = new MemoryStream(capacity)) { object CloneObject; BinaryFormatter bf = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone)); bf.Serialize(ms, this); ms.Seek(0, SeekOrigin.Begin); CloneObject = bf.Deserialize(ms); ms.Close(); return CloneObject; } }
3.通过拷贝一份数据来达到刷新的目的:
private List < dto.DtoColumn > DeepCloneData(List < dto.DtoColumn > rawdata) { return rawdata.Select(x = >x.Clone()).Cast < dto.DtoColumn > ().ToList() }
this.dataGridView1.DoThreadPoolWork(() = > { this.dataGridView1.DataSource = DeepCloneData(CloneInitialColumnData); this.dataGridView1.Refresh(); });
相关文章推荐
- C#命名规则小总结
- c#递归遍历指定文件夹内的所有文件(包含子文件夹)
- C# Chart 控件快速使用
- c# send mail
- C#语法糖
- C# 画图
- 浅析C#中抽象类和接口的区别
- 浅析C#中抽象类和接口的区别
- C# WinForm通过WebClient实现文件上传下载 (附源码) 分类: C#.NET
- 浅析C#中接口的重要性
- 浅析C#中接口的重要性
- C#中隐藏的15大功能
- WIN8-Metro风格开发---入门篇(C#补全计划)
- C#中的空值的判断
- C#基础------文件读写操作案例
- C#基础------文件读写操作
- C# WinForm开发系列 - CheckBox/Button/Label/ProgressBar
- C#中的线程(一)入门
- C#中的线程(一)入门
- C# 实现生产者消费者队列