Winform中DataGridView对原对象修改后,如何取消找回原对象?

问题描述

我建了一个Class,代码如下:classPeople{privatestringname;publicstringName{get{returnthis.name;}set{this.name=value;}}}然后我有一个Peoples类classPeoples{privateList<People>peoples;publicList<People>Peoples{get{returnthis.peoples;}}}然后我把这个peoples实例绑定到Winform的一个DataGridView中在DataGridView旁边有添加、修改、删除等按钮,另外,DataGridView也支持修改。窗口有“确定”、“取消”按钮。点“取消”时要返回原对象,但是,我对DataGridView进行修改时已经改掉了原List,那我怎么找回原List呢?最土的方法也许是改前先复制一份List,有没有更完美的解决方案?谢谢

解决方案

解决方案二:
建议在classPeople上增加几个属性,IsNew,PreName(保留以前的Name)等等.这样就可以控制你的数据了.
解决方案三:
我觉得应该修改一下类的定义,使People有一个复制功能及Peoples属性返回它的一个副本:classPeopleCols{privateList<People>peoples;publicList<People>Peoples{get{List<People>tmp=newList<People>();foreach(Peoplepinthis.peoples){tmp.Add(p.Copy());}returntmp;}set{this.peoples.Clear();foreach(Peoplepinvalue){this.peoples.Add(p.Copy());}}}}classPeople{privatestringname;publicstringName{get{returnthis.name;}set{this.name=value;}}publicPeopleCopy(){People_p=newPeople();_p.name=this.name;return_p;}}
解决方案四:
嗯。这些方法都要修改类结构,有没有不用修改类结构的方法呢?楼主的意思应该是不修改类结构吧。
解决方案五:
如果不用修改原来的类结构,那可能就不能使用Class而使用Struct来声明数据类型了。比如:structPeople{privatestringname;publicstringName{get{returnthis.name;}set{this.name=value;}}}

时间: 2024-09-13 04:57:52

Winform中DataGridView对原对象修改后,如何取消找回原对象?的相关文章

Winform中DataGridView绑定IList数据源后的排序的控件

Winform中DataGridView绑定IList数据源后的排序的控件 也是从网上看到的方法,我封装好了 使用方法: 使用方法: IList<Model> aaa = new List<Model>();aaa = Getr();dataGridView1.DataSource = new ZiZhuDi.IListdataGridViewSort.BindingCollection<Model>(aaa); 下载地址:http://download.csdn.ne

WinForm中DataGridView折叠控件【超好看】_实用技巧

刚到一家新公司,领导下发任务要用cs系统做一个表格折叠显示,这真是把我难倒了,自己工作6年一直以来都是做BS的系统.这如果在BS里面那太简单了,JqGrid默认都自带,可是DataGridview不支持折叠啊.自己一点经验没有,怎么办呢?于是上网搜了相关视频,资料,开始学习起来.最后借鉴源码封了这么一个东西,发出来分享下,也能让自己加深印象. 首先不多说,上图.如果大家感谢还不错,请继续往下阅读: 大概的效果就是这样. 上代码. 1.首先重写DataGridview,代码如下: public c

哪位能否可以提供一个vs2010中datagridview实现数据新增,修改删除的完整例子

问题描述 哪位能否可以提供一个vs2010中datagridview实现数据新增,修改删除的完整例子 解决方案 解决方案二:vs2010还没用过~~应该和2008和2005一样吧解决方案三:你可以直接利用向导,绑定datagridview数据源到sqlserver呀解决方案四:2010的就牛逼了?不一个样嘛自己写update,insert,delete或者用绑定自动更新解决方案五:晕哦..都一样的...4.0版本只是改了少部分东西~~~~解决方案六:我不建议数据库与显示控件绑定起来.如果这样容易

winform中datagridview字段颜色

问题描述 winform中dataGridView显示出所有数据其中一列数据为"是否完成"如果这列的此字段为"是",单元格显示为绿色"否",单元格显示为红色.此功能如何完成?谢谢大家~~给下代码看看~~ 解决方案 解决方案二:代码没有,思路就是你先遍历那一列单元格的值然后if判断根据判断加上下面这句话dataGridView1.Rows[i].Cells[j].Style.BackColor=red://这个是着色i表示第几行,j表示列,后面颜色

C#winform 在DataGridView里面添加数据完成后,如何禁止他排序

问题描述 C#winform在DataGridView里面添加数据完成后,如何禁止他排序?我每次添加数据完成后,添加的这一行就会改变不再最下面了,请问高手们,如何禁止呢?谢谢 解决方案 解决方案二:默认好像不排序吧?你用了Sort?解决方案三:没有使用Sort

Winform中DataGridView绑定IList数据源后的排序

首先,实现ICompare接口 public class ObjectPropertyCompare<T> : IComparer<T> {private PropertyDescriptor property;private ListSortDirection direction; // 构造函数 public ObjectPropertyCompare(PropertyDescriptor property, ListSortDirection direction) {this

WinForm中DataGridView重新绑定后前台界面不刷新的问题解决办法

 代码如下 复制代码 List<CustomClass> sources=getItems(); datagridview.DataSource=sources.ToArray();

winform中datagridview录入数据的

问题描述 大家好,菜鸟刚学Winform开发,现在有个问题想请教大家.有两张表,一个学生基本信息表,一个请假记录表学生基本信息表,在数据库A中学号xuehao,姓名xingming请假信息表,在数据库B中学号xuehao,开始日期kaishiriqi,结束日期jieshuriqi学生基本资料维护进去了,现在想用datagridview做个录入请假信息的,datagrieview结构如下学号,姓名,开始日期,结束日期数据保存到请假信息表中去,只有姓名是从学生基本资料带进来的,我想做的功能是1.在进

WinForm 中 DataGridView的 一个问题

问题描述 我对DataGridView中的某一条数据修改了.要重新绑定,怎么才能只绑定我刚修改的那一条数据,.其它的都不变,修改是在外面的文本框里面修改的. 解决方案 解决方案二:SqlParametersp=newSqlParameter();SqlDataAdapterda;stringupdcmd="UpdateUserInfosetUserName=@UserName,UserPwd=@UserPwd,UserAge=@UserAge,UserType=@UserTypewhereUse