C#中序列化實(shí)現(xiàn)深拷貝,實(shí)現(xiàn)DataGridView初始化刷新的方法
winfrom中DataGridView在的單元格在編輯時(shí)候會修改它的數(shù)據(jù)源的,如果我們遇到這樣一種情景,刷新數(shù)據(jù)源到原始狀態(tài),這個(gè)時(shí)候要么數(shù)據(jù)源的重新獲取綁定,要么通過拷貝一份原始檔的數(shù)據(jù)再綁定處理,這里介紹拷貝方式處理。
大致代碼如下:
1.目標(biāo)對需要序列化,并實(shí)現(xiàn)ICloneable 接口:
[Serializable] public class DtoColumn : ICloneable2.實(shí)現(xiàn)接口方法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. 通過拷貝一份數(shù)據(jù)來達(dá)到刷新的目的:
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#中序列化實(shí)現(xiàn)深拷貝,實(shí)現(xiàn)DataGridView初始化刷新的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Nopcommerce為商城添加滿XX減XX優(yōu)惠券功能
中秋國慶節(jié)眼看到跟前了,很多商城都借此機(jī)會搞促銷活動,什么滿200減80送優(yōu)惠券等活動,基于后臺程序是怎么實(shí)現(xiàn)的呢?下面腳本之家小編帶領(lǐng)大家一起學(xué)習(xí)吧2015-09-09Chrome Visual Studio 2005下的編譯過程
研究Chrome ,首先得把它編譯出來,這對于后續(xù)的代碼分析和閱讀有很大的幫助,想想自己編譯出一個(gè) Chrome 瀏覽器來使用,那是一件很炫的事情。2009-07-07C#實(shí)現(xiàn)json的序列化和反序列化實(shí)例代碼
這篇文章主要介紹了C#實(shí)現(xiàn)json的序列化和反序列化實(shí)例代碼,有需要的朋友可以參考一下2013-12-12C#操作DataGridView獲取或設(shè)置當(dāng)前單元格的內(nèi)容
這篇文章介紹了C#操作DataGridView獲取或設(shè)置當(dāng)前單元格的內(nèi)容,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02C#?winform跨線程操作控件的實(shí)現(xiàn)
本文主要介紹了C#?winform跨線程操作控件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06C# 創(chuàng)建、部署和調(diào)用WebService簡單示例
這篇文章主要為大家詳細(xì)介紹了C# 創(chuàng)建、部署和調(diào)用WebService的簡單示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05