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

如何在弹出屏幕中完全隐藏PXButton?设置SetVisible后仍报错

解决Acumatica弹出窗口中PXButton无法隐藏的问题

核心问题分析

你当前在主图的RowSelected<POReceipt>事件中控制弹出窗口按钮的可见性,这是无效的——弹出窗口拥有独立的Graph实例,主图的事件不会影响到弹出窗口内的Action状态。另外仅设置AutoRepaint等属性不足以触发弹出窗口的UI刷新,必须在弹出窗口对应的Graph中处理按钮可见性。

具体解决方案

1. 定位弹出窗口对应的Graph

找到弹出窗口绑定的目标Graph(比如如果是通过PXPopupWindow或自定义对话框打开的,查看ASPX或代码中指定的Graph类型)。假设弹出窗口的Graph是POReceiptPopupGraph(替换为你实际的Graph名称)。

2. 在弹出窗口Graph中添加控制逻辑

在弹出窗口的Graph里,通过RowSelected事件(或针对弹出窗口中绑定的主DAC的事件)设置Action的可见性:

public class POReceiptPopupGraph : PXGraph<POReceiptPopupGraph>
{
    public PXAction<POReceipt> actionMoveAll;

    [PXButton(CommitChanges = true)]
    [PXUIField(DisplayName = "Move All")]
    protected void ActionMoveAll()
    {
        // 原有按钮逻辑
    }

    protected void _(Events.RowSelected<POReceipt> e)
    {
        if (e.Row == null) return;
        
        // 根据ReceiptType控制按钮可见性
        bool shouldHide = e.Row.ReceiptType == POReceiptType.TransferReceipt;
        actionMoveAll.SetVisible(!shouldHide);
        
        // 同时确保禁用状态和可见性同步(避免残留禁用状态导致报错)
        actionMoveAll.SetEnabled(!shouldHide);
    }
}

注意:如果弹出窗口绑定的是其他DAC,将RowSelected<POReceipt>替换为对应DAC的事件。

3. 验证ASPX配置

确保弹出窗口中的PXButton正确绑定到目标Action,无需额外冗余的刷新配置(弹出窗口的Graph事件会自动触发UI更新):

<px:PXButton ID="btnMoveAll" runat="server" CommandName="actionMoveAll" Text="Move All" />

4. 替代方案:通过UI绑定控制可见性

如果不想修改后台代码,也可以在ASPX中直接绑定按钮的Visible属性到Graph的自定义属性:

  • 在弹出窗口Graph中添加属性:
    public bool IsMoveAllVisible => Base.Document.Current?.ReceiptType != POReceiptType.TransferReceipt;
    
  • 在ASPX中绑定:
    <px:PXButton ID="btnMoveAll" runat="server" CommandName="actionMoveAll" Text="Move All" 
                 Visible='<%# DataBinder.Eval(Container, "IsMoveAllVisible") %>' />
    

关键注意点

  • 永远不要在主图事件中控制弹出窗口的UI元素,必须针对弹出窗口的独立Graph做处理。
  • 设置Visible=false时,按钮会从DOM中移除,不会再触发点击报错;如果仅设置Enabled=false,按钮仍会显示并触发禁用提示,这就是你当前遇到的问题。

内容的提问来源于stack exchange,提问作者Kyle Vanderstoep

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:05:33