日期:2014-05-18  浏览次数:20937 次

datarow 的行状态 与操作的关系
如果把datatable 作为数据源绑定到datagridview控件。界面操作后更新数据库。
  本来,我是想根据数据源的行状态来自己判断并生成sql语句的。
  所以得符合如下逻辑要求:
  1 如果有一行 用户新增了,然后又删掉了。那么这行 应该不做处理。
  2 如果原来就存在一行,用户删掉了,那么这行应该是状态为delete。生成delete sql语句。
  3 如果原来一行,用户删掉了,后来用户又加上了。从操作看,是用户自己的误操作。但此行目前我只能视为删除一行然后新增一行生成两条sql 一条delete 一条insert 。
   
  但是,在界面操作时存在一些关系,目前比较迷糊。
  1 在界面上,delete键删除一行时,对应的datatable中对应的datarow 是row.delete() 还是dt.rows.remove(row)???
  2 如果用代码,删除按钮用一个button 里面是row.delete() 。简单试了一下,但发现删除的时候有问题。也许是delete()过的行在数据源中的索引仍然不变。导致操作的时候界面上有的行不能真正删除。
  3 在真正想删除一行时,如上面的1。似乎应该是dt.rows.remove(row)是符合自己需要的。

============最新测试了下=============================
  作为参考:
  新增的行 用键盘delete时,数据源。rows.count 减少。 delete原来存在的行,则不变。

----------所以,问题是
  该如何写代码,能通过代码删掉真正界面看到的行?象delete键实现的那样。

 

------解决方案--------------------
你删除的时候就判断DataRow的状态。如果是新增的状态牛直接remove掉,如果不是就设为delete就可以了。