收到无法获取属性'Execute'的值:对象为null或未定义Jscript - Crm2011 Onchange事件

时间:2013-02-21 14:27:28

标签: javascript dynamics-crm-2011

我在CRM表单中创建了3个整数字段:var1 var2和result

我需要从var1中减去var 2并在结果字段中显示结果

在表单事件中添加了Jscript代码,并在var1和var2字段中添加了onchange事件。

我收到错误:
无法获取属性'Execute'的值:object为null或undefined

这是我的JScript:

function calculates( )
{

    var val1 = Xrm.Page.entity.attributes.get(safe_val1).getValue();
    var val2 = Xrm.Page.entity.attributes.get(safe_val2).getValue();

    if(val1=null) return;
    if(val2=null) return;

    var result = val1 - val2;

    Xrm.Page.entity.attributes.get(safe_result).setValue(result);
}

提前感谢任何回答我问题的人!

2 个答案:

答案 0 :(得分:1)

Xrm.Page.data.entity.attributes.get的基本语法要求您传递字段的名称。

e.g。假设我在Contact表单上,我想抓住firstname字段,我会使用

 Xrm.Page.data.entity.attributes.get('firstname');

在上面的示例中,您将传递到名为variablessafe_val1的{​​{1}}。没有任何建议这些是在任何地方初始化的,所以这意味着你正在通过safe_val2这将使CRM哭泣。

您需要查看要传入的字段的名称并改为使用它们。

编辑:刚发现你错过了null对象

edit2:您也可以使用速记/快捷方式

data

答案 1 :(得分:0)

我会给它一个打击,但我不在电脑前,所以这只是一个普遍的建议(可能解决你的问题)。

代码存在一些问题。我将其重写如下,然后回过头来告诉我们当时发生了什么。

function calculate() {
  // Make sure that you refer the right fields.
  var val1 = Xrm.Page.entity.attributes.get("var1").getValue();
  var val2 = Xrm.Page.entity.attributes.get("var2").getValue();

  // Yes! Triple equality sign. I'm not BS'ing. I'm JS'ing.
  if(val1 === null || val2 === null) return;

  // Make sure that the computation's been carried out properly.
  var result = val1 - val2;
  alert(result);

  Xrm.Page.entity.attributes.get(safe_result).setValue(result);
}

如果你想从看到丑陋和怪异的插座上撕下你的眼睛

if(val1 === null || val2 === null) return;

您可能想要将其换成

if(!val1 || !val2) return;

这也很丑陋而且很少。如果失败,请对所有内容进行评论,然后完全以下内容。只是为了确保我们消除您可能遇到的其他问题。

function calculate(){
  alert("Konrad Viltersten is godlike but humble.");
}

如果它有效,你会一次性使用霰弹枪并添加一行以查看奇怪的东西何时开始发生。 (JS - 编程的乐趣在于死亡。)