如何确保在crm页面中完成加载

时间:2018-01-15 08:58:26

标签: javascript dynamics-crm dynamics-crm-2016

我使用dynamics-crm 2016,我的任务是 - 在用户点击新按钮(在表单上 - 创建新记录)后, 表单将加载,我需要检查某个字段并根据该字段锁定我的表单。

当我从onLoad函数检查它时,该字段为空,如何在Xrm / Crm中检查我的页面是否已加载或我的所有字段都已满? 我的代码:

function OnLoad() {
        try {

             if (formType == formTypes.Create) {
      checkNeedsUnique();      
      }

    } catch (e) {
        frameworkGlobal.reportExceptionToServer(e);
    }            
};

//函数

function checkNeedsUnique(){
//portfolio return Null     
   var portfolio = Xrm.Page.getAttribute("protfolioid").getValue();
           var filter = "needsSet?$select=needsId&$filter=protfolioid/Id eq guid'"+ portfolio[0].id+"' and statecode/Value eq 0";
           var ret = frameworkGlobal.RetrieveMultiple(filter, false);
           if(!!ret && ret.length>0){          
           disableAllFields();
           }

        }

2 个答案:

答案 0 :(得分:0)

如果从表单的onLoad事件调用函数OnLoad,则所有字段都已加载。您无法从某些$(document).ready中调用它,因为它无法正常工作。

您正在检查的字段(portfolio)必须存在于表单上(或者如果您有Dynamics 365 9.0,则可以将此字段添加为脚本dependencies)。它可以隐藏,也可以放在一些隐藏的部分,但它必须在那里,我相信你没有把它放在表格上,或者你把它放在标题上(你应该把它称为{{1} }),这就是你得到null的原因。

如果您无法将其放在表单上,​​则必须使用API​​调用来检索它的值。

答案 1 :(得分:0)

这是属性名称中的错字吗?

Xrm.Page.getAttribute("protfolioid").getValue();

应该不是:

Xrm.Page.getAttribute("portfolioid").getValue();