我知道专家会笑这个问题,但是我真的很努力。请看一下这个片段。我是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浏览器控制台窗口中的屏幕截图:

javascript - 使用If的Dynamics CRM 2016功能查找-LMLPHP

然后,您应该能够评估所选选项的文本并触发警报:

if (workOrderStatus === 'Completed') {
    alert('Order Complete.);
}


注意,我使用的是===而不是==。有关更多信息,请参见this SO answer

如果这样不起作用,则应尝试调试。在浏览器中按F12键,找到您的脚本并在函数开始时输入一个断点。如果执行此操作有困难,请将以下行放在函数的顶部(并发布更改),按F12顶部以打开开发人员控制台,然后触发onChange事件:

debugger;

09-25 17:26
查看更多