我知道专家会笑这个问题,但是我真的很努力。请看一下这个片段。我是CRM和JavaScript的新手。
因此,问题在于我从查找列表中选择什么都无所谓,它会弹出警报。我可以看到“未完成”与“完成”不匹配,但仍会触发警报。
我是否需要编写ODATA查询来解决此问题?
Function MPMain_OnChange() {
try {
//get the work order status.
var wostatus = new Array();
wostatus =Xrm.Page.getAttribute("workorderstatus").getValue();
if (wostatus !=null) {
var name = wostatus[0].name;
if (name =="Completed") {
alert("Order Complete");
}
}
} catch {
//there is an error.
}
}
最佳答案
在CRM 2016中,您可以使用getSelectedOption()
或仅使用getText()
。可以在here中找到文档。在您的代码中,您将编写:
var workOrderStatus = Xrm.Page.getAttribute("wordorderstatus").getSelectedOption();
这将返回带有文本和值属性的对象,例如
{ text: 'Complete', value: 1 }
。我已经测试过,并且都可以在Dynamics CRM 2016开发环境中工作。这是我的Chrome浏览器控制台窗口中的屏幕截图:
然后,您应该能够评估所选选项的文本并触发警报:
if (workOrderStatus === 'Completed') {
alert('Order Complete.);
}
注意,我使用的是
===
而不是==
。有关更多信息,请参见this SO answer。如果这样不起作用,则应尝试调试。在浏览器中按F12键,找到您的脚本并在函数开始时输入一个断点。如果执行此操作有困难,请将以下行放在函数的顶部(并发布更改),按F12顶部以打开开发人员控制台,然后触发onChange事件:
debugger;