日期:2014-05-17  浏览次数:21269 次

GridControl 新增记录并保存到数据库(WINFORM程序)
本帖最后由 jimk5200 于 2013-06-18 17:27:49 编辑
申明一下:我做的是WINFORM程序

问题描述:
目前本人在用Devexpress控件, 其中一个功能是:显示数据是用GridControl→GridView
用LINQTOSQL获取数据并绑定到控件中, 用户在GridControl控件中按 方向键下 或 Alt+方向键下
在GridControl控件中新增一条记录,编辑完成后,自动保存,客户不需要用另外的Button按钮保存

我想要的回复:
各位大能,有思路的提供下思路,当然,有示例是最好的。

C# WINFORM DEVEXPRESS 新增保存数据

------解决方案--------------------
不知道 你获取数据源的方式是怎样的??我的是使用List集合,不过如果你使用的是DataTable最好,我说下我的思路吧
1:读取数据源到List或者DataTable,这里如果使用的是List,需要转换成DataTable这种方法网上很多,如果使用的DataTable ,这个DataTable的结构需要你手动设计,就是列的定义包括名称和类型,这里的类型最好跟读取数据表的结构一致,然后指定GridControl的列的FieldName为列明。

2:读取数据成功后判断是否存在数据,有的话直接绑定到你的GridControl,为空的话再进行创建DataTable操作,把这个空的DataTable也进行绑定到GridControl.

3:然后你可以进行输入数据,这里输入的数据会自动保存到DataTable中,当然如果有校验的话需进行校验。

4: 你可以在实例化新行的时候处理那个DataTable(就是新的数据行呈现的时候),具体标示的话就是主键ID,如果你循环这个DataTable的行时,获得行对象,判断该对象的主键是否为空,如果为的空的话,那就是你新增的行,后台需要执行新增操作;如果不为空,就是原来的数据或者是你修改后的数据,后台就需要执行更新操作。


至于你说的按键的话,本人用的是Tab键,可能涉及多列输入就比较方便了。希望能帮到你。。

------解决方案--------------------
个人认为这个自动保存的用户体验不太好,要么这个应用场景比较特殊。。。万一用户输入错了就存进去了?
如果需求是这样,那应该是在最后一个单元格编辑完成的时候检查新增的行并保存,可以考虑在这里触发。