在账单和调整屏幕中,我需要将项目和任务设置为有条件地启用
In the Bills and Adjustment screen I need to set Project and Task to be conditionally enabled
我对“账单和调整”屏幕进行了自定义,我需要启用网格部分中的项目和任务,超出源代码中指定的范围。
为此,我使用了重写的 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, null, true);
}
}
}
有人可以解释为什么这不启用这些字段吗?有没有其他方法可以做到这一点(除了完全复制源代码中的 RowSelected 事件)?
非常感谢...
不确定您所指的缓存是否在同一个 'state'(因为缺少更好的词)。尝试将 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, null, true);
}
catch(System.Exception) {}
}
每个 Acumatica 支持:
“我已经在 20R102 和 20R109 上测试过了。
它只适用于后者,这意味着这很可能是一个错误。
我会与工程人员核实这一点,但我知道一些 APInvoice 错误已从 20R104 开始解决。“
我对“账单和调整”屏幕进行了自定义,我需要启用网格部分中的项目和任务,超出源代码中指定的范围。
为此,我使用了重写的 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, null, true);
}
}
}
有人可以解释为什么这不启用这些字段吗?有没有其他方法可以做到这一点(除了完全复制源代码中的 RowSelected 事件)?
非常感谢...
不确定您所指的缓存是否在同一个 'state'(因为缺少更好的词)。尝试将 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, null, true);
}
catch(System.Exception) {}
}
每个 Acumatica 支持:
“我已经在 20R102 和 20R109 上测试过了。 它只适用于后者,这意味着这很可能是一个错误。
我会与工程人员核实这一点,但我知道一些 APInvoice 错误已从 20R104 开始解决。“