使用If查看Dynamics CRM 2016函数查找

时间:2017-05-16 16:21:00

标签: javascript dynamics-crm crm

我知道专家会嘲笑这个问题,但我真的很挣扎。请看一下这个片段。我是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.
    }
}

2 个答案:

答案 0 :(得分:1)

在CRM 2016中,您可以使用Uncaught TypeError: Super expression must either be null or a function, not undefined getSelectedOption()。可以找到文档here。在你的代码中,你会写:

getText()

这将返回具有文本属性的对象,例如var workOrderStatus = Xrm.Page.getAttribute("wordorderstatus").getSelectedOption();

我已经过测试,并且都在我的Dynamics CRM 2016开发环境中工作。这是我的Chrome浏览器控制台窗口的屏幕截图:

enter image description here

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

{ text: 'Complete', value: 1 }

注意我使用的是if (workOrderStatus === 'Completed') { alert('Order Complete.); } 而不是===。有关详细信息,请参阅this SO answer

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

==

答案 1 :(得分:1)

重写了整个事情。这有效。并非所有JavaScript库项目都在Dynamics CRM中可用,例如getSelectedOption。

function MPMain_OnChange() {
    try {
        // Get the work order status.
        var entityLabel, lookupFieldObject;
        lookupFieldObject = Xrm.Page.data.entity.attributes.get('worksorderstatus');

        if (lookupFieldObject.getValue() != null) {
            entityLabel = lookupFieldObject.getValue()[0].name;

            if (entityLabel != null && entityLabel == 'Completed')
                Xrm.Page.getAttribute('datecompleted').setValue(new Date());
        }
    }
    catch (error) {

    }
}

分享可能来这种方式的任何人。谢谢!