GetChanges使用痛点
Posted 紫紫幽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GetChanges使用痛点相关的知识,希望对你有一定的参考价值。
GetChanges使用时一般用于gridview列数据发生新增、修改、删除。用来获取这些数据,最后更改数据库。
在这里我遇到的问题是,经理要求原来的保存按钮 button 必须去掉,
并且使用底下的小图标来啊保存。这也是用户习惯的原因。
于是我就要实现这个功能。其中问题最大的出现了。当我
1 var dataTable = gridDataSource.DataSource as DataTable; 2 if (dataTable == null) 3 return; 4 5 6 var inblk = new EI.EIInfo(); 7 inblk.Tables.Clear(); 8 DataTable dtInsertValue = dataTable.GetChanges(DataRowState.Added); 9 DataTable dtUpdateValue = dataTable.GetChanges(DataRowState.Modified); 10 DataTable dtDeleteValue = dataTable.GetChanges(DataRowState.Deleted);
DataTable dtUpdateValue = dataTable.GetChanges(DataRowState.Modified);
修改了行内的一条数据以后,本应该在上面这行代码获取到修改的数据的,然而,获取到的却是修改前的数据。 然而按钮存在的时候是没有出什么问题的,这个时候的解决方法就是模拟按钮触发事件。
btnSave.PerformClick(); 成功解决问题。
然而在处理的过程中,我遇到了一个事情就是点击gridview处可以使获取修改后的数据正常,于是我想的是在保存的时候触发点击空白处事件。这个时候用了mousedown事件,搞了老久,主要是调用函数时参数不知道传什么。
在这个时候我也想到了模拟按钮触发事件,//btnSave_Click_1(null,EventArgs.Empty); 这是其中一种调用方式,穿的参数有(this,new eventargs())不过这两种方式都失败了。这个时候我甚至有个想法就是重
新选择一种保存的方式,放弃这种无谓的探究。其实上面成功的那个在第一次尝试的时候是除了问题的。后面我也没再次探究了。
在寻找解决方法的过程中总会遇到啊许多正面解决不了的事情。这个时候就需要迂回。当然代价不小的。我甚至想和经理说干不了这个活。真的是只是不想放在按钮上就要搞这么旧。 总而言之,一定要灵活,主要是更换修改方式,
代价有点太大了。这个时候懂得东西越多,思路越多,解决的越快。就需要平常的积累了。没别的方法。
总结一下:
1.单击空白处,失败
2.模拟按钮 第一次方法选择1 失败
3.放弃getchangeds方法,因为开始只尝试到修改不行,使用硬核的方式将datatable直接压入dtUpdateValue 成功解决修改的影响,没想到后面插入收到了影响。心态爆炸。
4.正确的按钮模拟 成功。
修改:第二条总结,今天出现了,问题在于按钮隐藏时,如果使用btnSave.PerformClick(); 这个时候他是不会生效的,我的处理方法师,把尺寸设置为(1,1),还有就是在调用的时候在显示。
this.btnSave.Visible = true; //btnSave_Click_1(null,EventArgs.Empty); btnSave.PerformClick(); this.btnSave.Visible = false;
这样处理的话,和隐藏按钮效果是几乎一样的。
以上是关于GetChanges使用痛点的主要内容,如果未能解决你的问题,请参考以下文章
DataTable.GetChanges() 返回 null
grid.getChanges 怎么获取不取Grid的修改数据,一点没反应
Spring 使用 Mypy 检查 30 万行代码,总结出 3 大痛点与 6 个技巧