命令行上的按鈕應該會在Power Apps 中顯示時隱藏

適用於: Power Apps
原始 KB 編號: 4552163

判斷隱藏按鈕的原因

按鈕可能會隱藏,因為與評估為 false 的按鈕相關聯的命令上有啟用規則顯示規則。 可能是相關聯的命令具有 Mscrm.HideOnModern 顯示規則,可隱藏整合介面應用程式中的按鈕。 也可以建立 HideCustomAction ,以強制隱藏按鈕。 如果使用者離線,則不會顯示沒有 Mscrm.IsEntityAvailableForUserInMocaOffline 啟用規則的自定義命令和預設命令。

警告

  • EntityPrivilegeRule 類型的任何顯示規則,其 PrivilegeType 值為下列其中一個 (建立入、刪除指派共用) 會在實體啟用 [行動裝置中只讀] 選項時評估為 false,這會強制實體只允許讀取許可權。 在實體上啟用 [行動中只讀] 旗標時,一些最常用的默認系統規則會評估為 false 的范例如下所示,但不限於此清單 (Mscrm.CreateSelectedEntityPermission、、Mscrm.CanWriteSelectedMscrm.WritePrimaryEntityPermissionMscrm.CanDeletePrimaryMscrm.DeletePrimaryEntityPermissionMscrm.CanSavePrimaryMscrm.SharePrimaryPermissionMscrm.DeleteSelectedEntityPermissionMscrm.AssignSelectedEntityPermissionMscrm.CanWritePrimaryMscrm.WriteSelectedEntityPermissionMscrm.ShareSelectedEntityPermission) 。 您可以編輯實體並取消核取 [行動裝置中的只讀 ] 選項,以允許這些規則評估為 true,前提是規則所測試的許可權也會授與使用者。
  • 請勿從命令中移除 Mscrm.HideOnModern 顯示規則,以強制按鈕出現在整合介面中。 具有顯示規則的 Mscrm.HideOnModern 命令適用於舊版 Web 用戶端介面,在整合介面中不支援,而且可能無法正確運作。
  1. 啟用 [命令檢查程式],然後選取要檢查的命令按鈕

  2. 下列範例顯示聯繫人實體方格頁面上的 [ 新增 ] 按鈕不可見,而且會以標示為 [新增] 的專案表示 (隱藏)

    注意事項

    如果您的按鈕未列出,可能是因為可能已安裝 HideCustomAction 自定義,或相關聯的命令具有 Mscrm.HideOnModern 顯示規則。 撰寫本指南時,命令檢查工具不會列出已由 或 Mscrm.HideOnModern 顯示規則隱藏的HideCustomAction按鈕。 我們目前正在擴充此清單,以在未來的更新中包含此資訊。

    此螢幕快照顯示聯繫人實體方格頁面上的 [新增] 按鈕不可見,且以標示為 [新增] (隱藏) 的專案表示。

    注意事項

    如果所有規則都評估為 True 時仍隱藏按鈕,可能是因為 方格中的內容敏感命令。 在方格上選取記錄時,所有沒有 SelectionCountRule 元素的按鈕都會被視為與選取的記錄 () 無關。 而且即使其規則評估為 True,也會隱藏它們。 請注意,飛出視窗不會受到影響,因為飛出視窗子系可能仍有以記錄為基礎的命令。

  3. 選取 [ 命令屬性] 索引標籤,以顯示此按鈕的命令詳細數據。 這會顯示啟用規則和顯示規則,以及每個規則評估結果 (TrueFalseSkipped) 。 下列範例顯示新 (隱藏) 按鈕的 命令 Mscrm.NewRecordFromGrid ,而且有名為的啟用 new.contact.EnableRule.EntityRule 規則已評估為 False,因此按鈕將會隱藏。

    此螢幕快照顯示 [新增 (隱藏) ] 按鈕的命令屬性詳細數據。

  4. Expand the new.contact.EnableRule.EntityRule enable rule, by selecting on the chevron icon to view the details of the rule. 若要瞭解規則評估為 True 或 False 的原因,需要稍微瞭解規則類型。 如需每種規則類型的詳細資訊,請 參閱定義功能區啟用規則定義功能區顯示規則。 下列範例顯示規則類型是 Entity ,而實體邏輯名稱是 account。 由於目前的實體是 聯繫人,不等於 帳戶,因此此規則會傳回 False。

    此螢幕快照顯示檢視規則詳細數據的範例。

  5. 修正按鈕可見度所需的方法,將取決於您特定案例中的各種自定義專案。 考慮我們的範例:

    • 如果此規則是以錯誤方式建立,讓規則中宣告的實體想要 連絡 ,但設定為 帳戶,您可以編輯 new.contact.EnableRule.EntityRule 啟用規則,並進行允許規則評估為 true 的變更。
    • 如果意外地將此規則新增至命令,您可以修改 Mscrm.NewRecordFromGrid 命令,並從命令定義中移除 new.contact.EnableRule.EntityRule 啟用規則。
    • 如果命令是 Microsoft 已發布定義的覆寫,則可以刪除此自定義版本的命令來還原預設功能。

修復選項

從下列其中一個索引標籤中選取修復選項。 默認會選取第一個索引標籤。

如何刪除命令

如果有另一個解決方案層包含命令的工作定義,您可以刪除定義來還原非作用中的工作定義。

如果這是唯一的一層,而且您不再需要命令,則如果沒有其他按鈕參考命令,您可以從解決方案中移除它。

若要刪除命令,我們必須判斷安裝自定義的解決方案:

  1. 選取命令名稱下方的 [ 檢視命令定義解決方案層] 連結,以檢視安裝命令定義的解決方案 () 。

    [檢視命令定義解決方案層] 連結在命令名稱下的螢幕快照。

  2. [方案圖層] 窗格會顯示特定解決方案已安裝之每個功能區元件定義的分層。 清單頂端的圖層是應用程式目前使用的定義,其他層級則為非使用中,而應用程式目前不會使用。 如果頂端解決方案已卸載,或已安裝可移除定義的更新版本,則下一層將會成為應用程式目前使用的使用中定義。 當 Unmanaged Active 解決方案層存在時,它一律會是應用程式所使用的定義。 如果沒有列出使用中的解決方案,則清單頂端所列的解決方案將會是應用程式所使用的定義。 任何未由 Microsoft 發佈的自定義受控解決方案,也會優先於 Microsoft 發佈的解決方案層。

    Entity 內容表示功能區自定義所在的物件,如果列出 [所有實體],則圖層來自應用程式功能區用戶端擴充功能,而非實體特定,否則會列出實體的邏輯名稱。

    當有兩個以上的圖層時,您可以選取兩個數據列,然後選取 [ 比較 ] 以檢視每個解決方案所帶入之定義的比較。

    取 [上一步 ] 會回到上一個 [命令檢查程式] 視窗。

    下圖顯示範例中 命令的解決方案層,並指出聯繫人實體有解決方案層,其 Unmanaged 自定義,如標題為 Active 的解決方案所表示。 您的實際案例可能不同,您可能沒有 作用中的 解決方案層,您可能有受控解決方案,而該解決方案的名稱會列在這裡。

    顯示解決方案層範例的螢幕快照。

  3. 既然我們已檢閱解決方案層,並識別出已安裝自定義的解決方案,我們必須修正適當解決方案中的定義。

選取符合您特定案例的下列其中一個選項:

此命令位於非受控作用中解決方案中

若要刪除 Active Unmanaged 解決方案層中的命令,我們將匯出包含實體或應用程式功能區的 Unmanaged 解決方案,並編輯 <RibbonDiffXml>customizations.xml 檔案中的節點,然後匯入此解決方案的新版本,其中已移除此命令以刪除元件。 請參閱 匯出、準備編輯和匯入功能區

此命令是實體特定的

根據我們的範例案例,我們發現實體是 聯繫 人,而需要刪除的命令是 Mscrm.NewRecordFromGrid ,而且它是從名為 DefaultPublisherCITTest的發行者,在作用中的 Unmanaged 解決方案層中宣告。

  1. 開啟 [進階設定]

  2. 流覽至 [設定>方案]

  3. 選取 [新增 ] 以建立新的解決方案,將 Publisher 設定為命令和作用中解決方案層級的命令檢查程式解決方案層級清單中所顯示的值。 (在我們的範例中,這是 DefaultPublisherCITTest)

  4. 取 [實體>] [新增現有]

  5. 選取命令在 (上定義的實體 在我們的範例中,這是 連絡) ,然後選取 [ 確定]

  6. 選取 [完成] 之前,請務必取消核取 [包含實體元數據] 和 [新增所有資產] 選項。

  7. 選取 [儲存]

  8. 取 [導出解決方案 ] 並匯出 Unmanaged 解決方案。

  9. 擷取 .zip 檔。

  10. 開啟 customizations.xml 檔案。

  11. <Entity>找出您想要編輯之實體節點的節點子節點,並找出其子<RibbonDiffXml>節點。

  12. 找出節點 <CommandDefinition> 。 (在我們的範例中,節點的 <CommandDefinition> 標識碼是 Mscrm.NewRecordFromGrid,因此我們會找出下列節點)

    顯示 CommandDefinition 節點位置的螢幕快照。

  13. 編輯節點, <RibbonDiffXml> 並移除具有您想要刪除之命令標識碼的特定 <CommandDefinition> 節點。 請確定您不會不小心刪除可能存在的其他 <CommandDefinition> 節點。 (根據我們的範例,我們會刪除 <CommandDefinition> 標識符為 Mscrm.NewRecordFromGrid.)

    刪除 CommandDefinition 節點的螢幕快照。

  14. 儲存 customizations.xml 檔。

  15. 將修改 過的customizations.xml 檔案新增至方案 .zip 檔。

  16. 匯入方案檔。

  17. 取 [發佈所有自定義]

命令位於應用程式功能區 (適用於「所有實體」)

如果命令不是實體特定的,而是適用於應用程式功能區中宣告的「所有實體」,則步驟會稍有不同,如下所示:

  1. 開啟 [進階設定]
  2. 流覽至 [設定>方案]
  3. 選取 [新增 ] 以建立新的解決方案,將 Publisher 設定為命令和作用中解決方案層級的命令檢查程式解決方案層級清單中所顯示的值。
  4. 選取 [用戶端延伸模組>] [新增現有的>應用程式功能區]
  5. 選取 [儲存]
  6. 取 [導出解決方案 ] 並匯出 Unmanaged 解決方案。
  7. 擷取 .zip 檔。
  8. 開啟 customizations.xml 檔案。
  9. 找出根 <RibbonDiffXml> 節點。
  10. 找出節點 <CommandDefinition>
  11. 編輯節點, <RibbonDiffXml> 並移除 <CommandDefinition> 具有您想要刪除之命令標識碼的節點。 請確定您不會不小心刪除可能存在的其他 <CommandDefinitions> 節點。
  12. 儲存 customizations.xml 檔。
  13. 將修改 過的customizations.xml 檔案新增至壓縮的方案 .zip 檔。
  14. 匯入方案檔。
  15. 取 [發佈所有自定義]
此命令來自我公司撰寫的自定義受控解決方案

若要刪除您所建立的自定義受控解決方案所安裝的命令,請遵循下列步驟:

  1. 在具有自定義解決方案非受控來源版本的個別開發組織中,完成上述 命令位於 Unmanaged Active Solution 選項中的 步驟。
  2. 遞增自定義解決方案的版本。
  3. 將解決方案導出為Managed。
  4. 在個別受影響的組織中,匯入這個新版本的自定義受控解決方案。
此命令來自我公司未從第三方/ISV 撰寫 (的自定義受控解決方案)

若要刪除由第三方/ISV 所建立之自定義受控解決方案所安裝的命令,您必須連絡解決方案的作者,並要求已移除特定命令定義的新版本解決方案,然後將此新解決方案安裝到受影響的組織。