2013-01-25 28 views
0

我有一些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 { 

    } 
} 

}

+0

看起來像js加載優先問題 – salexch

+0

我該如何解決這個問題? – jimminybob

+0

你有沒有試過document.onload? – salexch

回答

0

這是一個長鏡頭,但場不工作 - 它不正好是一個無效字段?如果它是一個只讀場,您可能需要對onsave事件添加

Xrm.Page.getAttribute(「fieldname」).setSubmitMode(「always」); 

+0

它已明確啓用,因爲我可以手動將字段設置爲不同的用戶,如果我想 – jimminybob