Create New Form not reload after save

做~自己de王妃 提交于 2019-12-11 13:39:30

问题


working good in crm 2011 but not in crm 2013 online

On opportunity Entity create New record form i show only:

1.Some attributes(all other fields/Section/Tabs are hide on form)
2.and an Html button like

function OnFormLoad(){   
  if(Xrm.Page.ui.getFormType() == 1 ) {

     SetRequiredLevelToNone();

     createHtmlButton("Save");

     HideTabsAndSections()    

  }
  else {    

  }
}

On click of Html button following function is triggered.

function showWholeForm() {
  Xrm.Page.data.entity.save();
}

I want to show all the fields of form after save, means want to reload whole form.
As working in crm 2011


回答1:


The save method in CRM 2013 will not refresh the page anymore. The new refresh method should be used in this case, as follows:

Xrm.Page.data.refresh(save).then(successCallback, errorCallback);
  • save: Boolean value to be passed as true if data should be saved after it is refreshed.
  • successCallback: Function to call when the operation succeeds
  • errorCallbak: Function to call when the operation fails, that will be passed an object with 2 properties - error code (number) and localized error message (string)

You could find the method documented here: http://msdn.microsoft.com/en-us/library/dn481607(v=crm.6).aspx




回答2:


I think you should first disable the auto-save if you want consistency with CRM 2011.

function OnSaveDisableAutoSave(eventArgs) {
   var saveType = eventArgs.getEventArgs().getSaveMode();
   if (saveType == 70 ||saveType  == 2)
   { //Disable AutoSave
      eventArgs.preventDefault();
   }
}

and then

function showWholeForm() {
   Xrm.Page.data.refresh(true).then(successCallback, errorCallback);
}



回答3:


To fix this you can do:

var saved = false;

function onLoad(){
    checkIfFormShouldBeReadOnly();
    attachEvent();
}

function attachEvent() {
    Xrm.Page.data.entity.addOnSave(executeOnSave);
}

function executeOnSave(saveExecution) {
    if (!saved) {
       saved = true;
       Xrm.Page.data.save().then(
          function () {
             checkIfFormShouldBeReadOnly();
          },
          function (errorCode, message) {
             Xrm.Page.data.refresh();
          }
       );
   }
}


来源:https://stackoverflow.com/questions/22163863/create-new-form-not-reload-after-save

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