覆盖内部静态 class CATranDetailHelper 函数 OnCATranDetailRowUpdatingEvent
Overwriting internal static class CATranDetailHelper funtion OnCATranDetailRowUpdatingEvent
有没有办法 extend/overwite 内部静态 class CATranDetailHelper 中的 OnCATranDetailRowUpdatingEvent 函数?
通常我可以这样做:
namespace test
{
[PXProtectedAccess]
public static class CATranDetailHelper_Extension : PXGraphExtension<CATranDetailHelper>
{
#region Event Handlers
protected void CAEntryType_RowUpdating(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected InvokeBaseHandler)
{
//if (InvokeBaseHandler != null)
// InvokeBaseHandler(cache, e);
var row = (CABankTranDetail)e.Row;
}
#endregion
}
}
问题是这是静态的 class。
任何覆盖此功能的建议将不胜感激
Is there a way to extend/overwite the OnCATranDetailRowUpdatingEvent function that Is in the internal static class CATranDetailHelper?
没有
Normally I can do something like this: class
PXGraphExtension< CATranDetailHelper >
您只能在继承自 PXGraph class.
的 classes 上创建图形扩展
示例:
class SOOrderEntry : PXGraph
Class CATranDetailHelper 不继承自 PXGraph,因此无法使用 PXGraphExtension 进行扩展。
The problem being this is a static class. any advice of to overwrite
this function will be appreciated
另一个问题是 class 被标记为内部。这表示此源代码区域禁止自定义,因此您不应尝试以任何方式更改它。
如果您需要更改行为,您需要检查调用此方法的位置。
理想情况下,方法调用位于事件处理程序中,您可以通过创建图形扩展来替换它。
例如,在 CATranEntry 图中调用了 OnCATranDetailRowUpdatingEvent。
由于 CATranEntry 是一个图形,您可以在 CATranEntry 上创建一个图形扩展并替换最终调用 OnCATranDetailRowUpdatingEvent 的 CASplit_RowUpdating 事件处理程序。
public class CATranEntry : PXGraph<CATranEntry, CAAdj>, PX.Objects.GL.IVoucherEntry
{
protected virtual void CASplit_RowUpdating(PXCache sender, PXRowUpdatingEventArgs e)
{
CATranDetailHelper.OnCATranDetailRowUpdatingEvent(sender, e);
if (CATranDetailHelper.VerifyOffsetCashAccount(sender, e.NewRow as CASplit, CAAdjRecords.Current?.CashAccountID))
{
e.Cancel = true;
}
sender.SetValueExt<CASplit.curyTranAmt>(e.NewRow, (e.NewRow as CASplit).CuryTranAmt);
}
}
有没有办法 extend/overwite 内部静态 class CATranDetailHelper 中的 OnCATranDetailRowUpdatingEvent 函数?
通常我可以这样做:
namespace test
{
[PXProtectedAccess]
public static class CATranDetailHelper_Extension : PXGraphExtension<CATranDetailHelper>
{
#region Event Handlers
protected void CAEntryType_RowUpdating(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected InvokeBaseHandler)
{
//if (InvokeBaseHandler != null)
// InvokeBaseHandler(cache, e);
var row = (CABankTranDetail)e.Row;
}
#endregion
}
}
问题是这是静态的 class。 任何覆盖此功能的建议将不胜感激
Is there a way to extend/overwite the OnCATranDetailRowUpdatingEvent function that Is in the internal static class CATranDetailHelper?
没有
Normally I can do something like this: class PXGraphExtension< CATranDetailHelper >
您只能在继承自 PXGraph class.
的 classes 上创建图形扩展示例:
class SOOrderEntry : PXGraph
Class CATranDetailHelper 不继承自 PXGraph,因此无法使用 PXGraphExtension 进行扩展。
The problem being this is a static class. any advice of to overwrite this function will be appreciated
另一个问题是 class 被标记为内部。这表示此源代码区域禁止自定义,因此您不应尝试以任何方式更改它。
如果您需要更改行为,您需要检查调用此方法的位置。 理想情况下,方法调用位于事件处理程序中,您可以通过创建图形扩展来替换它。
例如,在 CATranEntry 图中调用了 OnCATranDetailRowUpdatingEvent。 由于 CATranEntry 是一个图形,您可以在 CATranEntry 上创建一个图形扩展并替换最终调用 OnCATranDetailRowUpdatingEvent 的 CASplit_RowUpdating 事件处理程序。
public class CATranEntry : PXGraph<CATranEntry, CAAdj>, PX.Objects.GL.IVoucherEntry
{
protected virtual void CASplit_RowUpdating(PXCache sender, PXRowUpdatingEventArgs e)
{
CATranDetailHelper.OnCATranDetailRowUpdatingEvent(sender, e);
if (CATranDetailHelper.VerifyOffsetCashAccount(sender, e.NewRow as CASplit, CAAdjRecords.Current?.CashAccountID))
{
e.Cancel = true;
}
sender.SetValueExt<CASplit.curyTranAmt>(e.NewRow, (e.NewRow as CASplit).CuryTranAmt);
}
}