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
相关产品推荐
相关产品推荐

