0

我有一个场景,在Orders Form中有一个Invoice Schedule Sub-grid。在取消激活子网格中的特定记录时重新加载发票计划子网格时,我需要刷新/重新加载主窗体。

PS:此方案适用于 Dynamics 365 CRM 统一接口 (UCI)。我已经尝试了所有三个子网格事件,但在这种情况下没有帮助。

4

3 回答 3

2

您必须附加一个自定义事件处理程序来处理这个问题。阅读更多

var globalFormContext;

function myFormOnload(executionContext) {
  globalFormContext = executionContext.getFormContext(); 

  addSubgridEventListener();
} 

function addSubgridEventListener(){
  var gridContext = globalFormContext.getControl("<your_subgrid_name>");
  //ensure that the subgrid is ready…if not wait and call this function again
  if (gridContext == null){
     setTimeout(function () { addSubgridEventListener(); }, 500);
     return;
  }
  //bind the event listener when the subgrid is ready
  gridContext.addOnLoad(subgridEventListener);

}

function subgridEventListener(context){
  globalFormContext.data.refresh(false);
}
于 2020-01-27T19:49:40.863 回答
0

For UCI: From ribbon button pass the parameter of PrimaryControl and use below code to Refresh.

PrimaryControl.refresh();
于 2021-02-09T08:39:14.407 回答
0

此最新代码已在 v9 统一接口中验证并运行参考:https ://docs.microsoft.com/en-us/powerapps/developer/model-driven-apps/clientapi/reference/grids/gridcontrol/addonload

代码片段:

//On load of main form event
function OnloadOfMainForm(executionContext) {
// call onLoad of subgrid function
  SubgridEventHandler(executionContext);
} 

var globalFormContext;
function SubgridEventHandler(executionContext){
//make formContext as global
  globalFormContext = executionContext.getFormContext(); 
  var gridContext = globalFormContext.getControl("subgrid_name");

  //Verify the subgrid is loaded, if not recursively call function again
  if (gridContext != null && gridContext != undefined){
      //don't try to pass formEontext some time it doesn't works
      gridContext.addOnLoad(SubgridFunctionExe);
     }else{
        setTimeout(function () { SubgridEventHandler(); }, 200);
     }
}

//It triggers onLoad of form, on load and on refresh of subgrid
//as well on add new record and on delete of record it will trigger
function SubgridFunctionExe(){
// here use globalFormContext
  globalFormContext.data.refresh(false);
}
于 2021-02-02T16:18:54.287 回答