CRM tips: form显示未保存的修改怎么处理

   今天工作中遇到一个问题,一些实体的form一打开就显示unsaved changes, 当你试图去关闭或者跳转到别的form的时候,会显示修改未保存的alert。这虽然是个小问题,但是却会影响用户体验。

    

    下面就说说我分析和解决这个问题的流程。


     1. 检查这个form的JavaScript。

       如果js的onload中有setvalue, 就会改变field的值,导致这个问题。


   2. 检查这个实体的Business rule

       business rule中如果有set值的行为同样会产生unsaved的问题。


    3. 添加代码来解决。

     这个代码并不适用于一般情况,因为我们要通过改变所有form上的field的submit mode为never的方法去阻止”未保存的alert“的出现,但是一般情况下,我们是希望CRM保存我们的修改的。 所以这个程序只适用于你要通过代码去关闭form的时候。

示例代码如下:

var attributes = Xrm.Page.data.entity.attributes.get();
            // removes IsDirty property from all the fields
            for (var i in attributes) {
                attributes[i].setSubmitMode("never");
            }           
            // refresh grid view
             window.parent.opener.location.reload();
            Xrm.Page.ui.close();


    4.小窍门帮你找到有问题的field.

var attributes = Xrm.Page.data.entity.attributes.get();

string fieldnames = "";    

          for (var i in attributes) {

if(attributes[i].getIsDirty&&attributes[i].getIsDirty()){

fieldnames+=attributes[i].getName()+"\";

}


                alert(fieldnames);

}

这个代码将会把有修改的field的name给alert出来,这样你就可以去针对性在js或者business rule里面去寻找有关的代码了。另外,返回的是field的name, 不是display name 或者label. 


可以参考一下的链接去和之前解释过的submit mode去了解更多的细节:

https://social.microsoft.com/Forums/en-US/b36816be-72f9-4cf6-a1a7-adc8a4619513/no-dirty-fields-on-form-but-unsaved-changes-window-still-appears?forum=crmdevelopment


关于unsaved change的一些问题就说这么多了,希望对大家类似的问题有帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值