我有一些javascript代碼在我的窗體上,當記錄第一次被創建時它自動填充2查找字段與當前用戶。這在大多數情況下都能正常工作,但我注意到,在第一次使用它時(每天/會話?),我想填充的第一個字段確實填充,但是字段仍然看起來是空的,就好像代碼沒有工作。代碼填充查找不完全工作第一次
我已經確認該字段正在填寫,它只是顯示該字段不工作,但我不明白爲什麼,特別是爲什麼它只是一個字段,這是與...發生。
我將發佈我在下面使用的代碼,當調用它時,我傳遞了一個我想要設置的字段名稱的數組。任何人都可以幫我找出爲什麼這不起作用嗎?
感謝
function RetrieveUserInfo(fieldsToSet) {
//Retrieve user information
var context;
var serverUrl;
var UserID;
var ODataPath;
context = Xrm.Page.context;
serverUrl = context.getServerUrl();
UserID = context.getUserId();
ODataPath = serverUrl + "/XRMServices/2011/OrganizationData.svc";
var retrieveUserReq = new XMLHttpRequest();
retrieveUserReq.open("GET", ODataPath + "/SystemUserSet(guid'" + UserID + "')", true);
retrieveUserReq.setRequestHeader("Accept", "application/json");
retrieveUserReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
retrieveUserReq.onreadystatechange = function() {
SetUserValues(this, fieldsToSet);
};
retrieveUserReq.send();
}
function SetUserValues(retrieveUserReq, fieldsToSet) {
if (retrieveUserReq.readyState == 4
/* complete */
) {
if (retrieveUserReq.status == 200) {
var retrievedUser = this.parent.JSON.parse(retrieveUserReq.responseText).d;
if (retrievedUser.FullName != null)
//Get details of current user
var setUservalue = new Array();
setUservalue[0] = new Object();
setUservalue[0].id = Xrm.Page.context.getUserId();
setUservalue[0].entityType = 'systemuser';
setUservalue[0].name = retrievedUser.FullName;
//get form type
var formType = Xrm.Page.ui.getFormType();
if (formType != undefined) { //Create
if (formType == 1) {
//for each field specified, set it to the current user
for (var i = 0; i < fieldsToSet.length; i++) {
Xrm.Page.getAttribute(fieldsToSet[i]).setValue(setUservalue);
}
}
}
}
else {
}
}
}
看起來像js加載優先問題 – salexch
我該如何解決這個問題? – jimminybob
你有沒有試過document.onload? – salexch