You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dynamics 365无选项时隐藏flyout按钮No Options Available提示

Dynamics 365 隐藏空Flyout控件"No Options Available"提示方案

方案1:官方API实现(优先推荐,稳定性100%)

核心逻辑是在判断无可用菜单项时,直接通过客户端API控制Flyout父按钮的状态,从根源避免用户点击后弹出空提示,完全不需要修改DOM:

  • 原逻辑只判断是否往menuXml插入按钮节点,现在需要把API返回的判断结果同步复用,控制父按钮属性
  • 参考实现代码:
/**
* Flyout按钮动态初始化逻辑
* @param {Xrm.FormContext} formContext 表单上下文
*/
async function initFlyoutMenu(formContext) {
    // 替换成你自己的业务API调用逻辑,返回是否存在可展示的菜单项
    const hasValidMenuItems = await fetchMenuAvailability();
    const flyoutControl = formContext.getControl("your_custom_flyout_control_name");

    if (!hasValidMenuItems) {
        // 无可用选项时直接隐藏父按钮,也可根据业务需求换成setDisabled(true)禁用按钮
        flyoutControl.setVisible(false);
        return;
    }

    // 原有动态拼接菜单XML的逻辑
    let menuXml = `<Menu><Root>`;
    // ... 此处为你原有的拼接各按钮节点的逻辑
    menuXml += `</Root></Menu>`;
    
    // 给控件绑定生成的菜单
    flyoutControl.setMenu(menuXml);
    // 确认有菜单项时再把按钮设为可见
    flyoutControl.setVisible(true);
}

方案2:DOM拦截兜底方案(非官方支持,仅用于必须保留按钮可见的场景)

如果业务要求无菜单项时Flyout父按钮必须保持可见、不能隐藏或禁用,可以通过全局监听DOM渲染的方式拦截空提示弹出层:

  • 核心逻辑是监听页面DOM变化,识别到内容为"No Options Available"的Flyout弹出层时直接隐藏,可搭配自定义提示告知用户当前无可用操作
  • 参考实现代码:
/**
* 表单加载时绑定空Flyout提示隐藏逻辑
*/
function bindEmptyFlyoutHiderOnLoad() {
    // 防止重复绑定监听
    if (window._flyoutEmptyTipBinded) return;
    window._flyoutEmptyTipBinded = true;

    const domObserver = new MutationObserver(() => {
        // 匹配UCI框架下的Flyout弹出层容器
        const allFlyouts = document.querySelectorAll('[data-id*="FlyoutDialog"]');
        allFlyouts.forEach(flyoutEl => {
            const content = flyoutEl.textContent?.trim();
            if (content === "No Options Available") {
                flyoutEl.style.display = "none";
                // 可选:弹出自定义业务提示
                // Xrm.Navigation.openAlertDialog({text: "当前无可用操作项"});
            }
        });
    });

    domObserver.observe(document.body, {
        childList: true,
        subtree: true
    });
}

注意:方案2依赖UCI前端页面的DOM结构,不属于微软官方支持的自定义扩展范畴,每次Dynamics 365版本迭代后需要验证逻辑有效性,生产环境优先使用方案1。

内容的提问来源于stack exchange,提问作者Gokul Ganesan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 04:15:51