Acumatica问题:无法隐藏项目模块摘要标签页字段
问题:Acumatica项目模块摘要标签页字段隐藏失效问题
我正在尝试隐藏Acumatica项目模块摘要标签页的所有字段,大部分字段可通过以下代码实现隐藏:
protected void PMProject_RowSelected(PXCache cache, PXRowSelectedEventArgs e) { PXUIFieldAttribute.SetVisible<PMProject.automaticReleaseAR>(cache, row, false); PXUIFieldAttribute.SetVisible<PMProject.retainageMode>(cache, row, false); PXUIFieldAttribute.SetVisible<PMProject.includeCO>(cache, row, false); PXUIFieldAttribute.SetVisible<CN.CacheExtensions.ContractExt.allowNonProjectAccountGroups>(cache, row, false); PXUIFieldAttribute.SetVisible<PX.Objects.CT.ContractExt.usrBond>(cache, row, false); PXUIFieldAttribute.SetVisible<PX.Objects.CT.ContractExt.usrLastDateOnJob>(cache, row, false); PXUIFieldAttribute.SetVisible<PX.Objects.CT.ContractExt.usrBilledCompleteDate>(cache, row, false); }
但以下代码在其他场景可正常运行,在此处却无法生效:
// 计费与分配设置 Base.Billing.AllowSelect = false; Base.Billing.Cache.AllowSelect = false; Base.Caches[typeof(ContractBillingSchedule)].AllowSelect = false; PXUIFieldAttribute.SetVisible<PX.Objects.CT.ContractBillingSchedule.type>(cache, row, false); PXUIFieldAttribute.SetVisible<ContractBillingSchedule.nextDate>(cache, row, false); PXUIFieldAttribute.SetVisible<ContractBillingSchedule.lastDate>(cache, row, false); PXUIFieldAttribute.SetVisible<PMProjectExtension.payrollWorkLocationID>(cache, row, false); // 保留金 Base.ProjectRevenueTotals.Cache.AllowSelect = false; PXUIFieldAttribute.SetVisible<PMProjectRevenueTotal.curyRevisedAmount>(cache, row, false); PXUIFieldAttribute.SetVisible<PMProjectRevenueTotal.contractCompletedWithCOPct>(cache, row, false); PXUIFieldAttribute.SetVisible<PMProjectRevenueTotal.curyTotalRetainedAmount>(cache, row, false); }
(附:项目摘要标签页截图)
解决方案
1. 处理Billing与ContractBillingSchedule相关内容
ContractBillingSchedule是子数据视图,无法直接通过PMProject的缓存设置字段可见性,需单独为其编写RowSelected事件逻辑:
protected void ContractBillingSchedule_RowSelected(PXCache cache, PXRowSelectedEventArgs e) { var row = e.Row as ContractBillingSchedule; if (row == null) return; PXUIFieldAttribute.SetVisible<ContractBillingSchedule.type>(cache, row, false); PXUIFieldAttribute.SetVisible<ContractBillingSchedule.nextDate>(cache, row, false); PXUIFieldAttribute.SetVisible<ContractBillingSchedule.lastDate>(cache, row, false); }
要隐藏整个Billing视图,在PMProject_RowSelected中补充以下设置:
// 原有生效代码... // 隐藏Billing视图 Base.Billing.AllowSelect = false; Base.Billing.AllowInsert = false; Base.Billing.AllowUpdate = false; Base.Billing.AllowDelete = false; PXUIFieldAttribute.SetVisible(Base.Billing.Cache, null, false);
2. 处理ProjectRevenueTotals相关内容
PMProjectRevenueTotal属于汇总数据视图,需单独编写其RowSelected事件:
protected void PMProjectRevenueTotal_RowSelected(PXCache cache, PXRowSelectedEventArgs e) { var row = e.Row as PMProjectRevenueTotal; if (row == null) return; PXUIFieldAttribute.SetVisible<PMProjectRevenueTotal.curyRevisedAmount>(cache, row, false); PXUIFieldAttribute.SetVisible<PMProjectRevenueTotal.contractCompletedWithCOPct>(cache, row, false); PXUIFieldAttribute.SetVisible<PMProjectRevenueTotal.curyTotalRetainedAmount>(cache, row, false); }
同时在PMProject_RowSelected中隐藏整个汇总视图:
// 原有生效代码... Base.ProjectRevenueTotals.AllowSelect = false; PXUIFieldAttribute.SetVisible(Base.ProjectRevenueTotals.Cache, null, false);
3. 处理PMProjectExtension自定义字段
确认PMProjectExtension是PMProject的缓存扩展类,若直接设置无效,可通过缓存获取扩展实例后操作:
var ext = cache.GetExtension<PMProjectExtension>(row); PXUIFieldAttribute.SetVisible<PMProjectExtension.payrollWorkLocationID>(cache, ext, false);
内容的提问来源于stack exchange,提问作者user3783932
相关产品推荐
相关产品推荐

