제 양식에 자바 스크립트 코드가 있습니다. 레코드를 처음 만들 때 현재 사용자가 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