我使用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();
}
}
最佳答案
如果您从表单的 onLoad 事件调用函数 OnLoad
,则所有字段都已加载。您无法从某些 $(document).ready
调用它,因为它无法正常工作。
您正在检查的字段(portfolio
)必须存在于表单中(或者,如果您有 Dynamics 365 9.0,则可以将此字段添加为脚本 dependencies )。它可以隐藏,也可以放置在某个隐藏部分,但它必须在那里,我相信您没有将其放在表单上,或者您将其放在标题上(您应该将其称为 "header_portfolioid"
),这就是为什么你得到 null。
如果您无法将其放入表单中,则必须使用 API 调用来检索其值。
关于javascript - 如何确保crm页面加载完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48259669/