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

如何在Bills and Adjustments界面明细网格强制启用自定义字段

问题原因定位与解决思路

  • 调整事件执行优先级,避免被基础逻辑覆盖
    标准的APInvoice原图的APTran_RowSelected事件会在账单进入已审核/已过账等锁定状态时将所有明细字段设为禁用,如果你定制的事件执行顺序早于原图逻辑,你的设置会被后续执行的原图代码覆盖。你可以给事件方法添加最低优先级标记,确保你的代码最后执行:
    [PXPriority(PXPriority.Lowest)]
    protected virtual void APTran_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
    {
        var aptran = e.Row as APTran;
        if (aptran != null)
        {
            PXUIFieldAttribute.SetEnabled<APTranExt.usrGrantID>(cache, aptran, true);
            PXUIFieldAttribute.SetEnabled<APTranExt.usrReimbursementPeriod>(cache, aptran, true);
        }
    }
    
  • 检查页面与字段特性的硬编码限制
    1. 打开对应ASPX页面,检查这两个自定义字段的控件属性,确认没有手动设置Enabled="False"或ReadOnly="True",页面控件属性的优先级高于后端代码设置
    2. 检查自定义字段的CacheAttached定义,确认没有添加[PXReadOnly]、[PXUIEnabled]这类带条件控制可用性的特性,如果有相关特性,要么调整其判断条件,要么删除后用RowSelected的代码控制
  • 替换泛型方法为字符串重载排查映射问题
    部分情况下扩展字段的泛型映射可能出现异常,可以先用字符串版本的重载测试是否生效,排除字段名拼写、扩展类映射错误的问题:
    PXUIFieldAttribute.SetEnabled(cache, aptran, "UsrGrantID", true);
    PXUIFieldAttribute.SetEnabled(cache, aptran, "UsrReimbursementPeriod", true);
    
  • 处理缓存级别的禁用限制
    如果账单锁定状态下系统直接将APTran缓存的AllowUpdate属性设为了False,那么单字段的SetEnabled配置不会生效。这种情况下你可以先临时放开缓存更新权限,再按需控制其他字段的可用性:
    [PXPriority(PXPriority.Lowest)]
    protected virtual void APTran_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
    {
        var aptran = e.Row as APTran;
        if (aptran == null) return;
        // 先放开缓存更新权限
        cache.AllowUpdate = true;
        // 启用自定义字段
        PXUIFieldAttribute.SetEnabled<APTranExt.usrGrantID>(cache, aptran, true);
        PXUIFieldAttribute.SetEnabled<APTranExt.usrReimbursementPeriod>(cache, aptran, true);
        // 可选:如果需要限制原生字段继续禁用,可以遍历原生字段设置Enabled为false
    }
    
  • 排查其他定制逻辑的冲突
    如果系统中存在其他二次开发扩展也订阅了APTran_RowSelected事件,同样可能在你的代码执行后覆盖字段启用设置。你可以在你的代码结尾处加断点,查看字段的Enabled属性是否按预期修改,再跟踪后续执行的代码定位冲突逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:06:03