我是CRM开发的新手,我正在尝试自定义帐户表单以将onChange上的任何文本字段都大写。我目前正在使用我在网上找到的此功能:

function UpperCaseField(fieldName)
{
var value = Xrm.Page.getAttribute(fieldName).getValue();
if (value != null)
{
   Xrm.page,getAttribute(fieldName).setValue(value.toUpperCase());
}
}


但是,当我更改测试帐户中的值时,它告诉我不支持方法getValue()。我发现的所有内容都告诉我使用getValue()。我无所适从。

任何帮助,将不胜感激。
谢谢

最佳答案

如果出现不支持getValue的错误,请仔细检查fieldName的值实际上是表单上的字段。最好像下面这样防御性地编写代码:

function UpperCaseField(fieldName)
{
    var attr = Xrm.Page.getAttribute(fieldName);
    if (!attr) {
        console.log(fieldName + " not found");
        return;
    }

    var value = attr.getValue();
    if (value != null)
    {
       attr.setValue(value.toUpperCase());
    }
}


更新:当您通过表单编辑器将字段连接到JS函数时,CRM将事件上下文作为第一个参数传递。在这种情况下,代码如下所示:

function UpperCaseField(context)
{
    var fieldName == context.getEventSource().getName();
    var attr = Xrm.Page.getAttribute(fieldName);
    if (!attr) {
        console.log(fieldName + " not found");
        return;
    }

    var value = attr.getValue();
    if (value != null)
    {
       attr.setValue(value.toUpperCase());
    }
}


以下是有关上下文的更多信息:https://msdn.microsoft.com/en-us/library/gg328130.aspx

08-25 10:55
查看更多