Reload Form on reload/refresh of subgrid in Dynamics 365 CRM Unified Interface

有些话、适合烂在心里 提交于 2021-02-11 16:49:06

问题


I have a scenario where in Orders Form there is a Invoice Schedule Sub-grid. I need to Refresh/Reload the Main Form when the Invoice Schedule Sub-grid is reloaded on Deactivating a particular record in the Sub-grid.

P.S: This scenario is for Dynamics 365 CRM Unified Interface (UCI). I have tried all the three Sub-grid events but does not help in this scenario.


回答1:


You have to attach a custom event handler to deal this. Read more

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);
}



回答2:


This latest code verified and works in v9 unified interface Reference: https://docs.microsoft.com/en-us/powerapps/developer/model-driven-apps/clientapi/reference/grids/gridcontrol/addonload

Code snippet:

//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);
}



回答3:


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

PrimaryControl.refresh();


来源:https://stackoverflow.com/questions/59929848/reload-form-on-reload-refresh-of-subgrid-in-dynamics-365-crm-unified-interface

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!