我被要求做出我认为非常简单的自定义,隐藏PO订单输入页面上的Promised On字段。我在自定义编辑器中打开了PO301000屏幕,突出显示了Promised On,单击了Attributes并在屏幕级别上单击了Override。我将POOrderEntry上的结果代码更改为:
const filtered = new ReplaySubject(1);
// ... your other code, including updating the filter
this.data.filter(<filter>).subscribe(filtered);
令我惊讶的是,它没有用,Promised On字段仍然可见,我不知道为什么。版本是18.100.0062。
答案 0 :(得分:0)
看起来POOrderEntry中有一个RowSelected事件,它根据它是否为一揽子PO来设置可见性。由于这是事件链中的后期,因此它会覆盖CacheAttached事件。
您可以通过添加自己的RowSelected事件来获得所需内容。这是一个例子。
protected void POOrder_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{
PXUIFieldAttribute.SetVisible<POOrder.expectedDate>(cache, null, false);
}
答案 1 :(得分:0)
GeorgeM使用下面的代码。诀窍是在更改字段的可见状态之前调用baseMethod。
namespace PX.Objects.PO
{
public class POOrderEntry_Extension : PXGraphExtension<POOrderEntry>
{
[PXOverride]
protected virtual void POOrder_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected baseMethod)
{
baseMethod(cache, e);
PXUIFieldAttribute.SetVisible<POOrder.expectedDate>(cache, null, false);
}
}
}