【问题标题】:How to make sure load complete in crm page如何确保在 crm 页面中完成加载
【发布时间】:2018-01-15 08:58:26
【问题描述】:

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

当我从 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();
           }

        }

【问题讨论】:

  • 把你已经试过的代码放在这里
  • @fool-dev 我更新了我的问题

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


【解决方案1】:

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

您要检查的字段(portfolio)必须存在于表单上(或者,如果您有 Dynamics 365 9.0,则可以将此字段添加为您的脚本 dependencies)。它可以隐藏,也可以放在某个隐藏部分,但它必须在那里,我相信你没有把它放在表单上,​​或者你把它放在标题上(你应该将它称为"header_portfolioid") ,这就是为什么你会得到空值。

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

【讨论】:

  • 该字段在表单上。
  • @Damkulul 如果该字段在表单上,​​并且您的 onLoad 是从 CRM 的 OnFormLoad 调用的,则您的字段将已加载并可访问。在我看来你拼错了“投资组合”
【解决方案2】:

这是属性名的错别字吗?

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

不应该是:

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

【讨论】:

    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2014-08-09
    相关资源
    最近更新 更多