微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OnCreate 事件的确认对话框

如何解决OnCreate 事件的确认对话框

当我尝试在自定义实体中创建实体记录时,我正在尝试创建一个对话框作为警告用户

我写了一个 JS,我试图触发表单的 onSave。但是,这个对话框是在循环中弹出的。在我接受或取消活动时都会发生这种情况。

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
}
,

我会将阻止自动保存功能和打开对话框功能分开

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

请记住,当成功打开和关闭对话框(按下取消或确定按钮)时,将调用 successCallbackopenConfirmDialog

单击对话框右上角的确认、取消或 X 关闭确认对话框时执行的函数。

如果您希望在表单的 onSave 上显示此对话框,请考虑在表单的 onLoad 上添加:

let form = executionContext.getFormContext();
// Assuming you want to prevent auto save all times
form.data.entity.addOnSave(preventAutoSave);
form.data.entity.addOnSave(openConfirmDialog);

function openConfirmDialog() {

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

                }
            });
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?