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