确切的代码取决于上下文,它是在新 Graph(使用 'this')还是 GraphExtension(使用 'Base')中,以及您是否要在新页面中选择销售订单。
最常见的方法是创建您想要的屏幕图表(在本例中为 SalesOrderEntry)并重定向到该图表。
这是一个图表扩展的事件处理程序示例,其中为新页面选择了销售订单:
[PXUIField(DisplayName = "View Sales Order")]
public virtual IEnumerable ViewSalesOrder(PXAdapter adapter)
{
const string salesOrderNbr = "SOXXXXXXX";
const string salesOrderType = "SO";
SOOrderEntry salesOrderEntry = PXGraph.CreateInstance<SOOrderEntry>();
SOOrder salesOrder = PXSelect<SOOrder,
Where<SOOrder.orderNbr, Equal<Required<SOOrder.orderNbr>>,
And<SOOrder.orderType, Equal<Required<SOOrder.orderType>>>>>.Select(Base,
salesOrderNbr,
salesOrderType);
if (salesOrderEntry != null && salesOrder != null)
{
salesOrderEntry.Document.Current = salesOrder;
throw new PXRedirectRequiredException(salesOrderEntry, "Document") { Mode = PXBaseRedirectException.WindowMode.NewWindow };
}
return adapter.Get();
}
如果您不需要选择销售订单,这也应该可以:
[PXUIField(DisplayName = "View Sales Order")]
public virtual IEnumerable ViewSalesOrder(PXAdapter adapter)
{
throw new PXRedirectRequiredException(PXGraph.CreateInstance<SOOrderEntry>(), "Document") { Mode = PXBaseRedirectException.WindowMode.NewWindow };
}
对于某些具有 PXPrimaryGraph 属性的 DAC,您可以直接重定向到 DAC 对象:
PXRedirectHelper.TryRedirect(Base, dacObject, PXRedirectHelper.WindowMode.NewWindow);