如何为供应商通用查询批量操作下拉菜单添加自定义操作?
通用查询批量操作添加自定义操作的解决方案
代码报错原因及修复
你写的代码报错是因为Initialize方法执行时,Approve动作还未完成初始化,直接访问Approve.IsMass会触发空引用异常。调整代码结构,把动作声明放在Initialize之前,或者直接通过属性标记批量可执行:
修复后的代码示例
using PX.Data; using PX.Objects.AP; namespace PX.Objects.AP { public class VendorMaint_Extension : PXGraphExtension<VendorMaint> { // 先声明动作 public PXAction<Vendor> Approve; [PXButton(MassProcessable = true)] // 直接标记为批量可执行动作 [PXUIField(DisplayName = "Approve")] public void Approve() { // 批量处理逻辑:遍历选中的供应商记录 foreach (Vendor vendor in Base.VendorRecords.Select()) { // 在这里添加你的审批业务逻辑,比如更新供应商状态 // vendor.Status = VendorStatus.Approved; // Base.VendorRecords.Update(vendor); } Base.Actions.PressSave(); throw new PXException("批量审批完成!"); } public override void Initialize() { // 按需设置动作可见性 Approve.SetVisible(true); } } }
让操作显示在通用查询批量菜单的额外步骤
- 确认通用查询主DAC匹配:目标通用查询必须以
Vendor作为主数据访问类(DAC),否则自定义动作无法被识别。 - 启用通用查询批量操作:打开通用查询的「结果网格」标签页,勾选「启用批量操作」选项。
- 配置动作可见性:若动作未出现在批量菜单,检查通用查询的「操作」标签页是否添加了该自定义动作,或确保代码中
SetVisible(true)已配置。 - 工作流动作批量支持:通过工作流创建的动作默认不支持批量,需在工作流设计器中把动作的「批量处理」属性设为
True,同时确保动作触发条件适配批量选中的记录。
内容的提问来源于stack exchange,提问作者user27760710
相关产品推荐
相关产品推荐

