crm2011中的Javascript

crm2011中的Javascript,javascript,dynamics-crm-2011,Javascript,Dynamics Crm 2011,法定免责声明:JavaScript的新功能 表单:我的表单 字段: ntt_name ntt_lookup1 ntt_lookup2 要求: if (typeof(CRMDynamics2011) == "undefined") { CRMDynamics2011 = {}; } CRMDynamics2011.MyForm = { FormSave: function() { alert("Within Function FormSave"); va

法定免责声明:JavaScript的新功能

表单:我的表单

字段

ntt_name
ntt_lookup1
ntt_lookup2
要求

if (typeof(CRMDynamics2011) == "undefined")
{ CRMDynamics2011 = {}; }

CRMDynamics2011.MyForm = {
    FormSave: function() {
        alert("Within Function FormSave");
        var lookup1 = Xrm.Page.getAttribute("ntt_lookup1").getValue();
        var lookup2 = Xrm.Page.getAttribute("ntt_lookup2").getValue();
        if (lookup1 != null && lookup1[0] && lookup1[0].name != null) {
            alert("lookup1 is NOT NULL");
            var value1 = lookup1[0].name;
        }
        if (lookup2 != null && lookup2[0] && lookup2[0].name != null) {
            alert("lookup2 is NOT NULL");
            var value2 = lookup2[0].name;
        }
        var fieldName = Xrm.Page.getAttribute("ntt_name");
        fieldName.setValue(value1 + ' - ' + value2);

    }
};
读取ntt_lookup1和ntt_lookup2的值,获取名称(而不是id),将它们连接起来并填充到名称字段(主属性)中

我将其作为Web资源上传,将其与表单MyForm关联,并将其添加到onsave事件中

我得到以下错误

问题:我做错了什么

我到目前为止所做的事情

ntt_name
ntt_lookup1
ntt_lookup2
  • 谷歌搜索了一下错误,发现了一个问题。因此,使用Notepad++和手动跟踪来仔细检查是否有任何缺少的括号
    代码

    if (typeof(CRMDynamics2011) == "undefined")
    { CRMDynamics2011 = {}; }
    
    CRMDynamics2011.MyForm = {
        FormSave: function() {
            alert("Within Function FormSave");
            var lookup1 = Xrm.Page.getAttribute("ntt_lookup1").getValue();
            var lookup2 = Xrm.Page.getAttribute("ntt_lookup2").getValue();
            if (lookup1 != null && lookup1[0] && lookup1[0].name != null) {
                alert("lookup1 is NOT NULL");
                var value1 = lookup1[0].name;
            }
            if (lookup2 != null && lookup2[0] && lookup2[0].name != null) {
                alert("lookup2 is NOT NULL");
                var value2 = lookup2[0].name;
            }
            var fieldName = Xrm.Page.getAttribute("ntt_name");
            fieldName.setValue(value1 + ' - ' + value2);
    
        }
    };
    

    在使用名称空间时,必须完全限定要调用的方法

    因此,在CRM的表单属性中,用于OnSave事件

    CRMDynamics2011.MyForm.FormSave();
    

    然后,当您单击“保存”时,CRM应调用您的方法。

    您使用什么将其添加到onsave?我猜是“FormSave()”。试试“CRMDynamics2011.MyForm.FormSave()”。我觉得自己像个白痴!谢谢glosrob!如果你回答这个问题,我会投票/将其标记为已接受,或者如果你同意,我可以将其标记为删除(我的偏好-因为这本身不是一个有价值的编程问题)。不管怎样,我都可以。先试试(可能不是问题)!而且这也不是很明显,所以肯定不是愚蠢的。如果您使用的是rollup 12,可能会有进一步的问题。不,它工作得非常好。警报出现了,当然,我还有其他问题,比如ntt_名称上的最终值是“值1-[对象]”,但我想我可以解决这个问题。谢谢!是的,当我使用方法的完全限定名时,它就工作了。