更新数据表后主表单未同步,如何从子表单刷新主表单控件?
解决主表单数据未同步更新的问题
完全可以从CreateSupplier或EditSupplier表单中访问并刷新主表单的控件,下面给你两种实用的实现方式:
方法一:打开子表单时传递主表单引用
这是最可靠的方式,避免依赖表单名称的硬编码:
- 在主表单中打开子表单时,把主表单对象作为参数传递:
DO FORM CreateSupplier WITH THISFORM - 在子表单(CreateSupplier/EditSupplier)的
Init方法中接收并保存这个引用:LPARAMETERS oMainForm THIS.AddProperty("oMainForm", oMainForm) - 在子表单完成供应商创建/编辑并保存数据后,直接调用主表单的刷新方法:
// 先确保数据已写入数据源 TABLEUPDATE(.T.) // 刷新主表单及控件 THIS.oMainForm.Refresh() // 也可以单独刷新指定控件 THIS.oMainForm.TName.Refresh() THIS.oMainForm.TEmail.Refresh() THIS.oMainForm.TPhone.Refresh()
方法二:通过表单名称直接访问主表单
如果主表单有固定的名称(比如主表单的Name属性设为frmMain),可以直接通过表单集合引用:
// 在子表单保存数据后执行 TABLEUPDATE(.T.) _SCREEN.Forms("frmMain").Refresh() // 或单独刷新控件 _SCREEN.Forms("frmMain").TName.Refresh()
这种方式要注意主表单必须唯一存在,否则可能找不到对象。
另外,你之前的刷新代码没生效,大概率是因为主表单的数据源没有重新获取最新数据。如果控件绑定的是视图或查询结果,需要先重新查询数据源再刷新控件:
// 在主表单的Refresh方法中添加 REQUERY("YourSupplierView") // 替换成你的视图名 THISFORM.Refresh()
内容的提问来源于stack exchange,提问作者andrey rodriguez
相关产品推荐
相关产品推荐

