我的表单上有一些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 :(得分:0)
这是一个很长的镜头,但这个领域不起作用 - 它不会是一个禁用的领域?如果它是 readonly 字段,您可能需要添加
Xrm.Page.getAttribute(“fieldname”).setSubmitMode(“always”);
在onsave
事件中。