Динамически скрыть кнопку "Домой" в CRM 2015 с помощью Ribbon Workbench не работает
Я создаю настраиваемое правило включения, чтобы скрыть кнопку "Импорт" в моем настраиваемом объекте в инструментальной ленте. Вот мой код JS:
function ShowHideButton() {
var context;
var serverUrl;
var UserID;
var ODataPath;
var toReturn;
context = Xrm.Page.context;
serverUrl = context.getClientUrl();
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 () {
toReturn = retrieveUserReqCallBack(this);
};
retrieveUserReq.send();
return toReturn;
}
function retrieveUserReqCallBack(retrieveUserReq) {
var retrievedUser = this.parent.JSON.parse(retrieveUserReq.responseText).d;
var retrievedValue = retrievedUser.BusinessUnitId;
var id = retrievedValue.Id;
var refIdAdmin;
var refIdTL;
var refMember;
refIdAdmin = "6EF4BCC3-5608-E511-9415-22000A93809E";
refIdTL = "CCFE0C41-D208-E511-9416-22000A93809E";
refMember = "1010FC5F-2D2C-E511-941A-22000AA400C9";
if (id.toUpperCase() == refIdAdmin) {
return true;
}
else if (id.toUpperCase() == refIdTL) {
return true;
}
else if (id.toUpperCase() == refMember) {
return true;
}
else {
return false;
}
}
не могли бы вы помочь мне исправить код, чтобы Ribbon Workbench мог прочитать то, что я хочу вернуть?
1 ответ
Вы делаете асинхронный запрос, и это проблема, когда ваш toReturn имеет значение null, когда правило проверено
var request = new XMLHttpRequest();
request.open('GET', '/bar/foo.txt', false); // false makes the request synchronous
request.send(null);
if (request.status === 200) {
console.log(request.responseText);
}