问题描述
我对“账单和调整项”屏幕进行了自定义,在其中我需要启用网格部分中的“项目和任务”,而不是源代码中指定的范围。
为了做到这一点,我使用了一个重写的RowSelected事件,但这似乎不起作用。这里的附加上下文是批准地图设置起作用。
以下是代码,该代码覆盖了我认为可以但不起作用的RowSelected事件:
protected void APInvoice_RowSelected(PXCache cache,PXRowSelectedEventArgs e,PXRowSelected InvokeBaseHandler)
{
if (InvokeBaseHandler != null)
InvokeBaseHandler(cache,e);
var apinv = (APInvoice)e.Row;
if (apinv != null)
{
APRegister apreg = PXSelect<APRegister,Where<APRegister.refNbr,Equal<required<APRegister.refNbr>>>>.Select(Base,apinv.RefNbr);
if (apreg.Released != true)
{
PXUIFieldAttribute.SetEnabled<APTran.projectID>(Base.Transactions.Cache,null,true);
PXUIFieldAttribute.SetEnabled<APTran.taskID>(Base.Transactions.Cache,true);
}
}
}
有人可以解释为什么这不能启用这些字段吗?有没有另一种方法(完全复制源代码中的RowSelected事件)?
非常感谢...
解决方法
不确定您要引用的缓存是否处于相同的“状态”(缺少更好的单词)。尝试将Base.tran ....替换为正在接收“缓存”的PXCache
protected void APInvoice_RowSelected(PXCache cache,PXRowSelectedEventArgs e,PXRowSelected InvokeBaseHandler)
{
try
{
if (InvokeBaseHandler != null)
InvokeBaseHandler(cache,e);
PXUIFieldAttribute.SetEnabled<APTran.projectID>(cache,null,true);
PXUIFieldAttribute.SetEnabled<APTran.taskID>(cache,true);
}
catch(System.Exception) {}
}
,
每个Acumatica支持:
“我已经在20R102和20R109上对此进行了测试。 它仅在以后才有效,这意味着这很可能是一个错误。
我将通过工程学对此进行检查,但我知道从20R104开始已解决了一些APInvoice错误。”