Javascript OnCreate事件的确认对话框

Javascript OnCreate事件的确认对话框,javascript,dynamics-crm,microsoft-dynamics,dynamics-365,dynamics-crm-365,Javascript,Dynamics Crm,Microsoft Dynamics,Dynamics 365,Dynamics Crm 365,我试图创建一个对话框,作为在自定义实体中创建实体记录时向用户发出的警告 我写了一个JS,我试图在表单保存时触发它。然而,这个对话框正在循环中弹出。这在我接受或取消活动时都会发生 function OnFormSave(executionObj) { var eventArgs = executionObj.getEventArgs(); var formContext = executionObj.getFormContext(); // eventArgs.prevent

我试图创建一个对话框,作为在自定义实体中创建实体记录时向用户发出的警告

我写了一个JS,我试图在表单保存时触发它。然而,这个对话框正在循环中弹出。这在我接受或取消活动时都会发生

function OnFormSave(executionObj) {
    var eventArgs = executionObj.getEventArgs();
    var formContext = executionObj.getFormContext();
  //  eventArgs.preventDefault();

    if (eventArgs.getSaveMode() == 70)//AUTOSAVE
    {
        eventArgs.preventDefault();
        return;
    }

    var confirmStrings = { text: "Are you sure you want to continue to save the record?", title: "Warning" };
    var confirmOptions = { height: 250, width: 500 };
    Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then(
    function (success) {
        if (success.confirmed)
        {
           // formContext.data.save();
        }
        else {
            eventArgs.preventDefault();
          
        }
    });
}

有人能帮我吗?此外,此事件应仅在创建记录时发生。对此有任何修复吗?

您需要检查表单类型是否处于创建模式,然后执行对话框提示代码。这会奏效的

var formType = formContext.ui.getFormType();

if(formType == 1) { //create form

    // move your code here to execute only in create form mode
}

您需要检查表单类型是否处于创建模式,然后执行对话框提示代码。这会奏效的

var formType = formContext.ui.getFormType();

if(formType == 1) { //create form

    // move your code here to execute only in create form mode
}

我将分离“防止自动保存”功能和“打开对话框”功能

function preventAutoSave(executionContext?: Xrm.SaveEventContext<any>) {
        if (executionContext == null) return;
        var eventArgs = executionContext.getEventArgs();
        if (eventArgs.getSaveMode() == 70) {
            eventArgs.preventDefault();
        }
    }


我将分离“防止自动保存”功能和“打开对话框”功能

function preventAutoSave(executionContext?: Xrm.SaveEventContext<any>) {
        if (executionContext == null) return;
        var eventArgs = executionContext.getEventArgs();
        if (eventArgs.getSaveMode() == 70) {
            eventArgs.preventDefault();
        }
    }


我试着用一种不同的方式来回答这个问题:

var count = 0;

function OnFormSave(executionObj, para) {
    var eventArgs = executionObj.getEventArgs();
    var formContext = executionObj.getFormContext();

    if (count == 0) {
        eventArgs.preventDefault();
    }

    if (formContext.ui.getFormType() == 1 && para != null && count < 1) {


        var confirmStrings = { text: "Are you sure you want to continue to save the record?", title: "Warning" };
        var confirmOptions = { height: 250, width: 500 };
        Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then(
            function (success) {
                if (success.confirmed) {
                    count = count + 1;
                    formContext.data.save();
                }
                else {
                    eventArgs.preventDefault();

                }
            });
    }
}
var计数=0;
函数OnFormSave(executionObj,第{
var eventArgs=executionObj.getEventArgs();
var formContext=executionObj.getFormContext();
如果(计数=0){
eventArgs.preventDefault();
}
if(formContext.ui.getFormType()==1&¶!=null&&count<1){
var confirmStrings={text:“确实要继续保存记录吗?”,标题:“Warning”};
变量确认={高度:250,宽度:500};
openConfirmDialog(ConfirmString,confirmOptions)。然后(
功能(成功){
如果(成功,已确认){
计数=计数+1;
formContext.data.save();
}
否则{
eventArgs.preventDefault();
}
});
}
}

我试图用一种稍微不同的方式回答这个问题:

var count = 0;

function OnFormSave(executionObj, para) {
    var eventArgs = executionObj.getEventArgs();
    var formContext = executionObj.getFormContext();

    if (count == 0) {
        eventArgs.preventDefault();
    }

    if (formContext.ui.getFormType() == 1 && para != null && count < 1) {


        var confirmStrings = { text: "Are you sure you want to continue to save the record?", title: "Warning" };
        var confirmOptions = { height: 250, width: 500 };
        Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then(
            function (success) {
                if (success.confirmed) {
                    count = count + 1;
                    formContext.data.save();
                }
                else {
                    eventArgs.preventDefault();

                }
            });
    }
}
var计数=0;
函数OnFormSave(executionObj,第{
var eventArgs=executionObj.getEventArgs();
var formContext=executionObj.getFormContext();
如果(计数=0){
eventArgs.preventDefault();
}
if(formContext.ui.getFormType()==1&¶!=null&&count<1){
var confirmStrings={text:“确实要继续保存记录吗?”,标题:“Warning”};
变量确认={高度:250,宽度:500};
openConfirmDialog(ConfirmString,confirmOptions)。然后(
功能(成功){
如果(成功,已确认){
计数=计数+1;
formContext.data.save();
}
否则{
eventArgs.preventDefault();
}
});
}
}

有任何后续问题吗?@ArunVinoth我发布了我为上述问题尝试和研究的解决方案。如果你能在问题上帮助我,那将是一个很大的帮助。还有后续问题吗?@ArunVinoth我发布了我为上述问题所尝试和努力的解决方案。如果你能帮我提问题,那将是一个很大的帮助。