爲標準Ribbon設置可用規則:enableRule

通過Ribbon workbench 可以追加新的ribbon並且追加相應的事件事件。
但是對於標準Ribbon則只能做到隱藏,不能追加自定義邏輯。
查閱了一些資料發現可以通過修改xml的形式進行操作。
以account爲例,對【新建】Ribbon設置enablerule規則。
1、首先查閱sdk中如下路徑: \SDK 2015\Resources\ExportedRibbonXml 中的accountRibbon.xml文件。
找到下面的xml配置。
這個就是crm底層的標準配置,我們將其粘貼出來放到自定義的節點上。

      <CommandDefinition Id="Mscrm.NewRecordFromForm">
        <EnableRules>
          <EnableRule Id="Mscrm.AvailableOnForm" />
        </EnableRules>
        <DisplayRules>
          <DisplayRule Id="Mscrm.PrimaryIsNotActivity" />
          <DisplayRule Id="Mscrm.HideInLegacyRibbon" />
          <DisplayRule Id="Mscrm.CreatePrimaryEntityPermission" />
        </DisplayRules>
        <Actions>
          <JavaScriptFunction FunctionName="Mscrm.RibbonActions.openNewRecord" Library="/_static/_common/scripts/RibbonActions.js">
            <CrmParameter Value="PrimaryEntityTypeName" />
          </JavaScriptFunction>
        </Actions>
      </CommandDefinition>

2、我們新建一個solution把account實體添加進去。然後導出。
在RibbonDiffXml 節點做如下修改:

<RibbonDiffXml>
        <CustomActions />
        <Templates>
          <RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates>
        </Templates>
        <CommandDefinitions>
          <!--add by ="Gavin" begin-->
          <CommandDefinition Id="Mscrm.NewRecordFromForm">
            <EnableRules>
              <EnableRule Id="Mscrm.AvailableOnForm" />
              <!-追加下面的EnableRule規則->
              <EnableRule Id="Mscrm.Home.Ribbons.OpenNewRecord.EnableRule" />
            </EnableRules>
            <DisplayRules>
              <DisplayRule Id="Mscrm.PrimaryIsNotActivity" />
              <DisplayRule Id="Mscrm.HideInLegacyRibbon" />
              <DisplayRule Id="Mscrm.CreatePrimaryEntityPermission" />
            </DisplayRules>
            <Actions>
              <JavaScriptFunction FunctionName="Mscrm.RibbonActions.openNewRecord" Library="/_static/_common/scripts/RibbonActions.js">
                <CrmParameter Value="PrimaryEntityTypeName" />
              </JavaScriptFunction>
            </Actions>
            <!--add by ="Gavin" end-->
          </CommandDefinition>
        </CommandDefinitions>
        <RuleDefinitions>
          <TabDisplayRules />
          <DisplayRules />
          <EnableRules>
            <!--add by ="Gavin" begin-->
            <EnableRule Id="Mscrm.Home.Ribbons.OpenNewRecord.EnableRule">
                <-!指定個人自定義的JS事件!->
              <CustomRule FunctionName="test" Library="$webresource:new_test.js" Default="false">
              </CustomRule>
              <!--add by ="Gavin" end-->
            </EnableRule>
          </EnableRules>
        </RuleDefinitions>
        <LocLabels />
      </RibbonDiffXml>

new_test.js 中test方法只有 return false。

function test()
{

return false;
}

3、重新導入solution。
4、效果
這裏寫圖片描述

將方法改爲return true.

```
function test()
{

return true;
}

“`
效果如下:
這裏寫圖片描述

發佈了68 篇原創文章 · 獲贊 15 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章