在销售订单页面中,我创建了PXAction
按钮,其目的是保存,将用户定义的复选框字段设置为true刷新页面。当复选框为真时,SQL触发器运行, SOLine Like价格等等。当前它保存并重定向到Base对象并检查字段,但新的重定向页面不显示SQL触发器完成的更改,直到我手动按刷新/ F5或按我的第二次按钮。抛出新的PXRedirectRequiredException不重新加载最新数据
但,如果我做的按钮手动做什么,只是保存页面,检查用户定义的复选框,然后按F5的变化能准确反映(从触发)有没有一种方法,我可以实现整页刷新就像一个F5,而不是诉诸Throw new PXredirectRequiredException()
这里是我的代码调用基对象,并重定向到基地:
public PXAction<SOOrder> KSRefresh;
[PXUIField(DisplayName = "Recal Prices")]
[PXButton(CommitChanges = true)]
protected virtual void kSRefresh()
{
SOLine sLine = PXSelect<SOLine, Where<SOLine.orderNbr, Equal<Required<SOLine.orderNbr>>>>.Select(Base, this.Base.Document.Current.OrderNbr);
SOOrder sOrder = PXSelect<SOOrder, Where<SOOrder.orderNbr, Equal<Required<SOOrder.orderNbr>>>>.Select(Base, this.Base.Document.Current.OrderNbr);
SOOrderExt sOrderExt = PXCache<SOOrder>.GetExtension<SOOrderExt>(sOrder);
sOrderExt.UsrRecalcPrice = true;
Base.Actions.PressSave();
if (sLine != null && sLine.InventoryID.HasValue)
{
throw new PXRedirectRequiredException(Base, null);
}
}
他再是我的代码试图重定向到基地的副本例如在新的实例,以测试是否会反映由触发器所做的新变化:
public PXAction<SOOrder> KSRefresh;
[PXUIField(DisplayName = "Recal Prices")]
[PXButton(CommitChanges = true)]
protected virtual void kSRefresh()
{
SOLine sLine = PXSelect<SOLine, Where<SOLine.orderNbr, Equal<Required<SOLine.orderNbr>>>>.Select(Base, this.Base.Document.Current.OrderNbr);
SOOrder sOrder = PXSelect<SOOrder, Where<SOOrder.orderNbr, Equal<Required<SOOrder.orderNbr>>>>.Select(Base, this.Base.Document.Current.OrderNbr);
SOOrderExt sOrderExt = PXCache<SOOrder>.GetExtension<SOOrderExt>(sOrder);
sOrderExt.UsrRecalcPrice = true;
SOOrderEntry grp = PXGraph.CreateInstance<SOOrderEntry>();
Base.Actions.PressSave();
grp.Document.Current = Base.Document.Current;
if (sLine != null && sLine.InventoryID.HasValue)
{
throw new PXRedirectRequiredException(grp, null);
}
}
在此先感谢。
很好,你找到了适合你的东西。确保你包含订单类型,因为它也是这样的关键的一部分:docgraph.Document.Search(order.OrderNbr,order.OrderType); –
Brendan