JavaScript Fires太快了。对象未加载

时间:2016-11-11 09:13:31

标签: javascript function onload dynamics-crm-2013

我在我的一个表单OnLoad事件上运行以下JavaScript: -

function calcServicePriceTotal() {

  var grid = document.getElementById('ProjectServicesGrid');
  var ids = grid.control.get_allRecordIds();
  var sum = 0.00;
  var cellValue;

  for (i = 0; i < ids.length; i++) {

    var cellValue = grid.control.getCellValue('iss_salesprice', ids[i]);
    var number = Number(cellValue.replace(/[^0-9\.]+/g, ""));
    sum = sum + number;
  }
  Xrm.Page.data.entity.attributes.get("ava_tempgrossvalue").setValue(sum);
}

不幸的是我收到以下错误: -

  

“错误:'subGridOnload'未定义”

我相信脚本在对象有需要加载的时间之前触发,所以我该怎么做才能减慢功能?必须有一些方法可以克服这个问题,但我远非JavaScript专家,所以我可以使用一些帮助。

提前致谢

1 个答案:

答案 0 :(得分:0)

function calcServicePriceTotal() {
    if (document.getElementById("Services")) {
        var grid = document.getElementById("Services").control;
        var ids = grid.get_allRecordIds()
        var sum = 0
        for (i = 0; i < ids.length; i++) {
           var cellValue = grid.getCellValue('iss_salesprice', ids[i]);
           var number = Number(cellValue.replace(/\D/g, ''));
           number = number/100;
           sum = sum + number;
       }
       Xrm.Page.data.entity.attributes.get("iss_value").setValue(sum);
    }
    else {
        setTimeout("calcServicePriceTotal();", 500);
    }
}