我使用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();
}
}
答案 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();