用DataGrid浏览数据相关实例(2)
数据操作
按钮添加
private sub badd_click(byval sender as system.object, byval e as system.eventargs) handles badd.click
dim dv as dataview
dim rownew as datarowview
dv = dg.datasource
rownew = dv.addnew()
rownew.endedit()
dg.currentrowindex = dv.table.rows.count - 1
dg.select(dg.currentrowindex)
end sub
在调用addnew添加一条新记录之后,紧接着调用了endedit,这样是表明这个添加操作已经完成,可以对这个新记录进行其它任何操作了。在此调用之前,新记录被认为是正在编辑的记录,会被锁定,这时对其进行删除操作就会引发错误,而且这条记录并不会真正的存入表中。在endedit调用之后,新记录存入表中,但是行状态被标志为新增记录。
这一步完成后,用户一般会通过表格输入新记录的各个字段值。在程序中,实际上是将这个过程视做对新增记录的修改。
按钮删除
private sub bdel_click(byval sender as system.object, byval e as system.eventargs) handles bdel.click
dim dv as dataview
dv = dg.datasource
dv.delete(dg.currentrowindex)
dg.select(dg.currentrowindex)
end sub
按钮保存
private sub bsave_click(byval sender as system.object, byval e as system.eventargs) handles bsave.click
me.updatedata()
end sub
保存子过程
private sub updatedata()
dim addds as dataset
dim delds as dataset
dim updateds as dataset
try
addds = ds1.getchanges(datarowstate.added)
delds = ds1.getchanges(datarowstate.deleted)
updateds = ds1.getchanges(datarowstate.modified)
if addds is nothing then
else
oddaperson.update(addds)
oddatype.update(addds)
end if
if updateds is nothing then
else
oddaperson.update(updateds)
oddatype.update(updateds)
end if
if delds is nothing then
else
oddaperson.update(delds)
oddatype.update(delds)
end if
catch ex as exception
msgbox(ex.message)
exit sub
end try
try
dvperson.table.acceptchanges()
dvtype.table.acceptchanges()
ds1.acceptchanges()
catch ex as exception
msgbox(ex.message)
exit sub
end try
end sub
* 在为datatable调用acceptchanges之后,将清除所有行的状态标志,也就是说,程序将无法再区分哪些是新添加的,哪些是被修改后的。所以所有利用行状态标志对数据源进行修改的操作都放在了此调用之前。
* 将各种修改存回数据源的顺序为:添加的行――被修改的行――被删除的行。以免在操作时发生逻辑错误。[iocblog.net 来源]
Tag: DataGrid
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。