Hi
I'm working on a forms bulk edit form. I'm supposed to hide an option set value only on Bulk Edit form, I was able to achieve it. Now we only want a user with specific security role not to see the option set value. Here is the code, I'm using to get role of current user but there was an error saying "GetServerURL is undefined", not sure if this method is valid on bulk edit forms. Is there any other way to achieve this?
function FormOnLoad()
{
var optCtrl = Xrm.Page.ui.controls.get("statuscode");
var CMRole = CheckUserRole("System Administrator");
if (Xrm.Page.ui.getFormType() == 6 && CMRole) {
optCtrl.removeOption(100000000);
}
}
function CheckUserRole(roleName) {
var currentUserRoles = Xrm.Page.context.getUserRoles();
for (var i = 0; i < currentUserRoles.length; i++) {
var userRoleId = currentUserRoles[i];
var userRoleName = GetRoleName(userRoleId);
if (userRoleName == roleName) {
return true;
}
}
return false;
}
function GetRoleName(userRoleId) {
var selectQuery = "RoleSet?$top=1&$filter=RoleId eq guid'" + userRoleId + "'&$select=Name";
var odataSelect = GetServerUrl() + selectQuery;
//alert(odataSelect);
var roleName = null;
$.ajax({
type: "GET",
async: false,
contentType: "application/json; charset=utf-8",
datatype: "json",
url: odataSelect,
beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Accept", "application/json"); },
success: function (data, textStatus, XmlHttpRequest) {
var result = data.d;
if (!!result) {
roleName = result.results[0].Name;
}
},
error: function (XmlHttpRequest, textStatus, errorThrown) {
//alert('OData Select Failed: ' + odataSelect);
}
});
return roleName;
}







