2016-11-11 64 views
0

我有以下的JavaScript對我的一種形式運行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); 
} 

不幸的是我得到了以下錯誤: -

"Error:'subGridOnload' is undefined"

我相信腳本之前發射該對象有它需要加載的時間,所以我該怎麼做才能減慢函數的速度?必須有一些方法來克服這一點,但我遠離JavaScript專家,所以我可以使用一些幫助。

在此先感謝

+0

你是如何調用這個函數? – Rajesh

+0

Rajesh,感謝您的編輯。我以正常方式通過窗體OnLoad事件上的CRM Form Properties窗口調用它。 – Powell21

+0

'grid.control.get_allRecordIds();'中是否有任何ajax調用? – Pankaj

回答

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); 
    } 
} 
+0

您應該使用'setTimeout(calcServicePriceTotal,500)'而不是將該函數包含在引號中。它直接調用函數,而不是在字符串上執行'eval' – jasonscript