You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新数据表后主表单未同步,如何从子表单刷新主表单控件?

解决主表单数据未同步更新的问题

完全可以从CreateSupplier或EditSupplier表单中访问并刷新主表单的控件,下面给你两种实用的实现方式:

方法一:打开子表单时传递主表单引用

这是最可靠的方式,避免依赖表单名称的硬编码:

  1. 在主表单中打开子表单时,把主表单对象作为参数传递:
    DO FORM CreateSupplier WITH THISFORM
    
  2. 在子表单(CreateSupplier/EditSupplier)的Init方法中接收并保存这个引用:
    LPARAMETERS oMainForm
    THIS.AddProperty("oMainForm", oMainForm)
    
  3. 在子表单完成供应商创建/编辑并保存数据后,直接调用主表单的刷新方法:
    // 先确保数据已写入数据源
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:45:59