2012-03-09 52 views
2

我成功地遵循以下答案Add Dropdown Menu to CRM 2011 ribbon與子菜單按鈕實施了三個動態加載FlyoutAnchor按鈕等Dynamics CRM中2011 - 動態添加FlyoutAnchor子菜單按鈕被禁用

昨天的子菜單按鍵都工作正常(點擊事件被解僱等),但在用Ribbon XML等方式重新導入解決方案後,子菜單按鈕告訴我(在工具提示中)它們已被禁用。確切的消息是「此按鈕當前被禁用,您可能沒有選擇使用此功能的項目,如果您無權使用此功能,請聯繫您的系統管理員」。

因此,我恢復到之前的Ribbon XML,但子菜單按鈕保持禁用狀態。它看起來像我在下面的線程中描述的相同的問題:CRM 2011 Dynamic Ribbon disabled HELP!!。但是我已經在我的服務器上安裝了Rollup 6,所以不應該發生這種情況。

我已經嘗試重置IIS並重新導入解決方案(多次)。我還檢查/添加了< EnableRule Id =「Mscrm.Enabled」/ >規則等。

我無法再次啓用子菜單按鈕。我究竟做錯了什麼?請幫幫我。

回答

2

我終於得到了我的子菜單按鈕再次啓用。很難說出讓它再次運行的動作的確切組合,但我會盡力將其作爲參考文檔記錄下來。 建議的解決方案是用強制CRM來完全更新功能區。這可以通過執行以下步驟來完成:

  1. 將您的解決方案導出爲備份。
  2. 在某處解壓縮此導出解決方案的副本,以便您可以修改'customizations.xml'文件以更新'問題'實體的RibbonDiffXml。
  3. 更換你<RibbonDiffXml> ... </RibbonDiffXml >與空色帶DIFF XML,即:

    <RibbonDiffXml> 
        <CustomActions /> 
        <Templates> 
         <RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates> 
        </Templates> 
        <CommandDefinitions /> 
        <RuleDefinitions> 
         <TabDisplayRules /> 
         <DisplayRules /> 
         <EnableRules /> 
        </RuleDefinitions> 
        <LocLabels /> 
        </RibbonDiffXml> 
    
  4. 保存更改(S)。

  5. 重新壓縮更改後的解決方案,導入併發布它。
  6. 重新導入步驟1中的原始解決方案併發布。功能區將被重新創建。
  7. 您的按鈕應該再次啓用。

可以採取的另一種方法是使用Ribbon Workbench for Dynamics CRM 2011 (Beta)。但要小心,並始終提供解決方案備份,因爲我發現該工具仍然非常錯誤(或者我的解決方案太大)。 使用該工具進行一些功能區更改(例如:向「問題」實體添加一個新按鈕),重新發布並測試。如果再次啓用子菜單按鈕,請重新導入併發布原始備份。子菜單按鈕可能保持啓用狀態。

因此,CRM在內部被搞砸了,並且通過強制重新構建有缺陷的功能區,CRM可以恢復自身或某種東西......我無法真正把它指向它。

1

我最近有類似的問題。您是否從功能區運行JavaScript?如果是這樣的話,功能區可能會禁用你的按鈕,因爲它找不到你所調用的javascript函數(我無法找到支持這種信念的文檔,define actionsdefine javascript頁面沒有提及它,但對我來說可能只是巧合) 。您最近是否更新了與功能區關聯的js文件?

+0

嗨本,謝謝你的迴應。我用Sub菜單項的CommandDefinition JavaScript函數嘗試了所有我能想到的東西。我首先使用了一個名爲「COMPANY.Ribbon.function」的命名空間,由一個自動執行的匿名函數創建。比我把它轉換成對象字面結構。最後我嘗試了一個扁平函數名稱,比如'Function ButtonClicked(){...}',但是他們都沒有啓用子菜單項。奇怪的是,FlyoutAnchor CommandDefinition JavaScript函數在同一個文件中,使用相同的命名結構並且被觸發。 – 2012-03-12 12:39:54

+0

如果他們被觸發,他們的功能可以找到,所以爲什麼不能找到子菜單功能? – 2012-03-12 12:41:35