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

原文地址:http://bbs.delit.cn/thread-328-1-1.html

转载请注明出处:

撰写人:度量科技http://www.delit.cn