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

SubGrid复选框列表点击功能区按钮后选中状态不更新

仅刷新SubGrid的可行方案

方案1:保存完成后异步刷新SubGrid

自定义提交按钮逻辑中,需等待保存操作完成后再执行SubGrid刷新,避免因服务器数据未同步导致的界面状态不一致:

// 自定义submit按钮核心逻辑
function customSubmit(formContext) {
    // 执行表单保存
    formContext.data.save().then(
        function success(result) {
            // 短暂延迟确保服务器数据同步后,刷新SubGrid
            setTimeout(function() {
                const subGridControl = formContext.getControl("Customer_Subgrid");
                if (subGridControl) {
                    subGridControl.refresh();
                }
            }, 500);
        },
        function error(error) {
            // 保留错误通知逻辑,无需刷新表单
            console.log(error.message);
        }
    );
}

方案2:直接刷新SubGrid数据源

针对控件缓存问题,可直接刷新SubGrid的数据源而非仅控件本身:

function refreshSubGrid(formContext) {
    const subGridControl = formContext.getControl("Customer_Subgrid");
    if (subGridControl) {
        // 刷新网格数据源
        subGridControl.getGrid().getDataSource().refresh();
    }
}

方案3:重置SubGrid视图同步状态

若复选框状态未更新是视图缓存导致,可重新加载当前视图:

function syncSubGridCheckboxState(formContext) {
    const subGridControl = formContext.getControl("Customer_Subgrid");
    if (subGridControl) {
        const currentView = subGridControl.getViewSelector().getCurrentView();
        if (currentView) {
            // 切换回当前视图触发状态同步
            subGridControl.getViewSelector().setCurrentView(currentView.id);
            subGridControl.refresh();
        }
    }
}

关键注意事项

  • 禁止调用formContext.data.refresh(),该操作会全局刷新表单,导致错误通知丢失
  • 自定义提交按钮需确保正确获取formContext,避免控件获取失败
  • 延迟刷新的时间可根据实际环境调整,确保服务器数据已完成更新

内容的提问来源于stack exchange,提问作者Kalpana Senthil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:49:55