检查表单是否已保存在CRM 2011 Javascript中

Check the form has saved or not in CRM 2011 Javascript

本文关键字:CRM 2011 Javascript 存在 保存 检查表 表单 是否 检查      更新时间:2023-09-26

我正在编写一个Javascript,在点击CRM 2011实体表单中的自定义功能区按钮时调用外部链接。在Javascript中,我检查表单是否脏。如果表单是脏的(意味着某些字段被用户修改),那么JScript将使用Xrm.Page.data.entity.save()强制保存表单。但是,当必填字段尚未填充时,将不会进行强制保存,我必须显示一些自定义消息来填充这些字段,终止控制流,并且不应打开外部链接。如何获取表单是否已保存。。?

代码如下:

function buttonOnClick() {
    if (Xrm.Page.data.entity.getIsDirty()) 
    {
        Xrm.Page.data.entity.save();
    }
    else 
    {
        window.open('http://www.google.com', 'name', 'width=900,height=800');
    }
}

当您说"表单已保存"时,您的意思是第一次?如果是,您可以查询表单类型:-

Xrm.Page.ui.getFormType();

(例如,它是在"创建"还是"更新"中)。如果表单已经处于更新模式,那么您可以检查表单是否像您所说的那样脏。如果你想知道哪些必填字段还没有完成,你也可以在表单上的属性上循环,并查询它们是否是业务必需的:-

Xrm.Page.data.entity.attributes.get("myAttribute").getRequiredLevel();

并将其添加到给用户的警告消息中。

您可以添加自己的OnSave方法来验证字段,并根据字段是否有效返回值。

例如

Xrm.Page.data.entity.addOnSave(function() {
    var isValid = VerifyOnSave();
    if (isValid) {
        //continue
    }
    else {
        //show errors, cancel save
    }
);
function VerifyOnSave()
{ 
    //<insert validation logic here>
    return true;
}

这不会明确告诉您保存的表单,但可以让您知道表单是否有效,这可能不够接近。

您可以尝试以下方式:

var entitySaved;
function OnLoad(){
   entitySaved=false;
 }
function OnSave(){
   entitySaved=true;
 }
function myFunction(){
  if(entitySaved){
   //do your logic here
  }
}

当然,您必须通过单击表单属性从CRM解决方案中添加表单事件。