度量快速开发平台-专业、快速的软件定制快开平台

标题: 网格部件新增单条数据不重新刷新显示新增数据 [打印本页]

作者: 刘亚东    时间: 2020-4-19 19:55
标题: 网格部件新增单条数据不重新刷新显示新增数据
1、网格部件不刷新显示新数据: 我们在做增删改查的窗体的时候,一般列表界面的新增代码是如下:


dim form1 = 创建窗体("a4011f01-6826-4868-b8c8-633251a188eb")
form1.Input1="ADD"
form1.ShowDialog()
call("刷新")



这样的话有一个问题就是,如果数据多了,那么每次新增完成后都会刷新一下列表,会很慢。
下面呢就是从编辑数据的窗体中返回一个数据ID,然后查询出这条数据,再添加到网格中,这样就只查询一条数据,效率就不用说了。


dim form1 = 创建窗体("a4011f01-6826-4868-b8c8-633251a188eb")
form1.Input1="ADD"
form1.ShowDialog()
'判断编辑窗体中的变量Output1变量(新增数据的ID)是否有值,有说明新增了。
if isnull(form1.Output1)=false then
        '从数据库查询出这条数据
        dim dt=ExecuteSelect("select * from meis_设备基本信息 where id='"+form1.Output1+"'")
        '把查询出来的第一行数据(只有一行)赋值给变量newdr
        dim newdr=dt.Rows[0]
        '网格部件中新增一行,并把这一行赋值给变量row
        dim row=网格部件1.DataTable.NewRow()
        '循环网格部件1的列
        for each c in 网格部件1.DataTable.Columns
                '判断查询出来的数据的列名是否存在与网格部件中,这个判断主要方便,后续在网格部件的业务表中添加、删除字段都没问题,或者定义了别名也不会应找不到字段报错。
                if dt.Columns.Contains(c.ColumnName) then
                '如果查询出来的数据中的字段在网格部件中存在,就把查询出来的某列的值赋值给网格部件新增行的某列
                        row[c.ColumnName]=newdr[c.ColumnName]
                end if
        next       
        '最后把新增的行添加到网格部件中
        网格部件1.DataTable.Rows.Add(row)
end if


作者: 张兴康    时间: 2020-4-19 20:10

作者: 王爱东    时间: 2020-4-19 20:27
这个方法确实好用,可以封装一下不,形成一个简单的方法,只刷新新增的数据。
作者: 陈晓龙    时间: 2020-4-20 13:46
对啊,强烈建议封装下。{:soso_e85d1f4758b346e8-0748188af89cde16-338c595639cabb76d916f49270c03038.jpg:}
作者: 王爱东    时间: 2020-4-22 11:12
如何提高构建的应用效率,这是各位构建人员向更高一级构建者迈进的方向。
作者: 刘亚东    时间: 2020-4-24 18:21
多写了些代码,但是还是可以实现自己想要的这种效果的哦。
作者: 刘亚东    时间: 2020-4-24 18:27
反正我觉得这个灰常好
作者: 张军勇    时间: 2020-4-25 09:48
最好在网格部件更新后,将数据源做一下提交,以清除更新标识。
网格部件1.DataTable.AcceptChanges()
作者: 万望    时间: 2020-4-25 17:22
不错这个能解决量大性能问题
作者: 王爱东    时间: 2020-4-25 17:30
网格部件1.DataTable.AcceptChanges()
关于datatable的各种数据操作可以多列出介绍下,我记得之前看到有,没成体系。




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://plat.delit.cn/) Powered by Discuz! X3.2