我试图将OrderType.POOrderType默认为POOrderType.DropShip。我尝试将自定义管理器中的属性更改为以下内容:
[PXDBString(2, IsKey = true, IsFixed = true)]
[PXDefault(POOrderType.DropShip)]
[POOrderType.List()]
[PXUIField(DisplayName = "Type", Visibility = PXUIVisibility.SelectorVisible, Enabled = true)]
[PX.Data.EP.PXFieldDescription]
但是在插入新记录后,它什么也没做。我还尝试在POOrderEntry的图表扩展中使用CacheAttached事件,如下所示:
public class POOrderEntryExt : PXGraphExtension<POOrderEntry>
{
[PXDBString(2, IsKey = true, IsFixed = true)]
[PXDefault(POOrderType.DropShip)]
[POOrderType.List()]
[PXUIField(DisplayName = "Type", Visibility = PXUIVisibility.SelectorVisible, Enabled = true)]
[PX.Data.EP.PXFieldDescription]
protected virtual void POOrder_OrderType_CacheAttached(PXCache sender) { }
}
这也行不通。
我终于尝试使用RowInserting事件,如下所示
protected virtual void POOrder_RowInserting(PXCache sender, PXRowInsertingEventArgs e)
{
POOrder poorder = (POOrder)e.Row;
if (poorder == null) return;
poorder.OrderType = POOrderType.DropShip;
}
此DOES默认为DropShip,但是,当我使用屏幕上的下拉菜单更改回&#39; Normal&#39;时,它会清空所有字段,而Type也为空。如果我再次选择“正常”,则会正确显示字段中的数据。我无法弄清楚这里发生了什么。我总是必须选择两次类型才能显示任何内容。我不明白为什么RowInserting事件会导致这种行为......
答案 0 :(得分:0)
POOrderEntry中有POOrder_OrderType_FieldDefaulting事件,其中设置了默认订单类型。
protected virtual void POOrder_OrderType_FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e)
{
e.NewValue = POOrderType.RegularOrder;
}
它具有比PXDefault属性“更高的优先级”(有关更多信息,请查看T200培训)。 所以你需要覆盖这个事件处理程序。