快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门24小时官网:【Dynamics CRM客户端程序开发教程】13、自定义系统标准按钮的可用性



一样平常是新建一个办理规划用于客制化敕令栏和Ribbon区,我这里是新建了一个 RibbonEditor的办理规划,然后将你要改动的实体加入进来。

我这里是选择 报价单 实体,然后点击 确定 按钮。

在 CRM > 设置 > 办理规划页面 点击 自定义 图标。

选择前面建立的办理规划,然后点击 OK 按钮。

确保选择的选项卡是Command Bar,由于我这里要改动的实体是Dynamics CRM 2013版本中的更新的实体。在 ENTITIES 中选择你要改动的实体,上面部分就会更新成你选择实体的敕令栏了。

然后根据你要变动的敕令栏的区域,选澳门24小时官网中相宜的敕令按钮,我这里是改动表单敕令栏,以是我选择如下,选择的事 FORM 的 Active Quote按钮。

右击我要改动的敕令按钮,选择 Customize Command 菜单项。

然后就可以看到有些变更了,如下,这是这个按钮的一些属性。

原先最好的法子是增添一个Diplay Rule来根据前提暗藏这个按钮,这里先容下。右击 Display Rules,选择 Add New这个菜单项,如下。

就会看到 Display Rules多了一行记录,右击,选择 Add Rule。

弹出的窗口如下,然则我们是要根据自定义的JavaScript来鉴定是否有角色权限,这里没有我们所要的类型,以是我们要用Enable Rule来做。

删除前面建立的Display Rule,我们使用Enable Rule来实现。可以看到已经有Enable Rule了,右击这个已经存在的Enable Rule,选择 Add New菜单项。

这里出来的可选类型和前面的Display Rule有些不合,我这里选择Custom Javascript Rule,然后点击OK按钮。

会多出一个 Custom Rule的节点,选中它,然后在右边设置属性如下。

留意,Library中选择的Web Resource (我这里是 new_/Te澳门24小时官网st.js) 要先上传至这个办理规划,用到的函数(这里是UserInSalesManagerRole) 也要先定义。

然后保存并宣布,如下图。

着末我去测试下,发明没有 激活报价单澳门24小时官网 按钮了。

我换个有这个角色的账号进去,可以看到这个按钮了。

用到的代码如下:

function GuidsAreEqual(guid1, guid2) {

var isEqual = false;

if (guid1 == null || guid2 == null) {

isEqual = false;

}

else {

isEqual = guid1.replace(/[{}]/g, "").toLowerCase() == guid2.replace(/[{}]/g, "").toLowerCase();

}

return isEqual;

}

function HasRole(roleName) {

var serverUrl = Xrm.Page.context.getClientUrl();

var oDataEndpointUrl = serverUrl + "/XRMServ澳门24小时官网ices/2011/OrganizationData.svc/";

oDataEndpointUrl += "RoleSet?$select=RoleId&$filter=Name eq '" + encodeURIComponent(roleName) + "'";

var service = new XMLHttpRequest();

if (service != null) {

service.open("GET", oDataEndpointUrl, false);

service.setRequestHeader("Accept", "application/json");

service.setRequestHeader("Content-Type", "application/json; charset=utf-8");

service.send(null);

var requestResults = eval('(' + service.responseText + ')').d;

if (requestResults != null && requestResults.results.length >= 1) {

var currentUserRoles = Xrm.Page.context.getUserRoles();

for (var j = 0; j

var RoleId = requestResults.results[j].RoleId;

for (var i = 0; i

UserRoleId = currentUserRoles[i];

if (GuidsAreEqual(UserRoleId, RoleId)) {

return true;

}

}

}

}

}

return false;

}

function UserInSalesManagerRole() {

return HasRole('贩卖经理');

}

可以知道的是应用Ribbon Workbench自定义按钮时是增添了如下的xml ,这些元素的含义可以参考SDK。

RuleDefinitions>

TabDisplayRules />

DisplayRules />

EnableRules>

EnableRule Id="Mscrm.QuoteIsInDraftState">

FormStateRule State="Disabled澳门24小时官网" InvertResult="true" />

FormStateRule State="Create" InvertResult="true" />

CustomRule FunctionName="UserInSalesManagerRole" Library="$webresource:new_/Test.js" Default="false" InvertResult="false" />

EnableRule>

EnableRules>

RuleDefinitions>

LocLabels />

RibbonDiffXml>

牢记不要犯初级差错:假如你的Web Resource是直接应用记事本编辑然后上传的,记得保存的时刻要选择编码为UTF-8,而不是默认的ASCII,应为你的代码中可能包括中文。

您可能还会对下面的文章感兴趣: