Acumatica自定义Action无法隐藏主工具栏显示,求解决方法
Acumatica自定义Action无法隐藏主工具栏显示的解决思路
问题描述
我有一个用于启动自定义报表的Acumatica自定义Action,代码如下:
public PXAction<PMProject> projectRegDet; [PXUIField(DisplayName = "Project Register Detailed")] [PXButton(DisplayOnMainToolbar = false, CommitChanges = true, Category = "Reports")] protected virtual void ProjectRegDet() { PMProject proj = Base.Project.Current; if (proj.ContractCD != null) { Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters["ProjectID"] = proj.ContractCD; throw new PXReportRequiredException(parameters, "LFS99002", null); } }
该功能运行正常,且已添加到操作菜单(椭圆按钮)的“Reports”分组,但无法使其不显示在主工具栏。尝试过代码中设置[PXButton(DisplayOnMainToolbar = false)]、自定义项目中设置Action可见性为false、ASPX中添加回调命令并设置可见性为false,所有操作均无效。
解决思路
- 排查重复Action定义:确认自定义项目或基础项目中没有重复注册同名的
projectRegDetAction,重复定义会导致属性设置被覆盖。 - 修正ASPX页面配置:在ASPX文件中找到对应Action的
<px:PXButton>标签,同时设置DisplayOnMainToolbar="False"和Visible="False",并检查父容器是否存在强制显示的配置。示例配置:<px:PXButton runat="server" ID="btnprojectRegDet" CommandName="projectRegDet" DisplayOnMainToolbar="False" Visible="False" /> - 用PXOverride覆盖基础Action:如果该Action继承自基础图,通过
PXOverride特性重写Action并重新设置DisplayOnMainToolbar属性,确保自定义配置生效。 - 清除缓存并重新发布:清除Acumatica网站缓存、重新发布自定义项目,重启应用池后再测试,避免缓存导致配置未更新。
- 检查报表自动注册逻辑:部分报表会自动在工具栏生成Action,排查是否有其他代码(如报表DAC扩展、图扩展)自动将该报表Action添加到主工具栏,修改相关逻辑。
- 验证权限配置:检查用户角色的权限设置,确认没有权限规则强制显示该Action在主工具栏。
内容的提问来源于stack exchange,提问作者pmfith
相关产品推荐
相关产品推荐

