重定向到操作下的页面的新操作
New Action to redirect to a page under Actions
我已经浏览了这里的一些问题,发现了一个重定向到带有一些参数的报告的问题。我只想在“操作”下拉列表下添加一个新操作,它只是用于重定向到 Acumatica 中的新页面。具体来说,我正在向案例页面 (CR306000) 添加一个操作,该按钮会将用户重定向到销售订单页面。我知道代码是用来创建按钮的:
[PXButton]
[PXUIField(DisplayName = "Custom Action Title")]
protected void CustomAction()
{
//stuff
}
public override void Initialize()
{
base.Initialize();
Base.action.AddMenuAction(this.customAction);
}
但是,我只是不知道重定向到新页面的代码是什么。我不确定只是 URL 转到哪个更好,或者是否有办法以不同的方式转到屏幕。
您可以使用PXRedirectRequiredException
打开图表。更好的是我喜欢使用 PXRedirectHelper.TryRedirect
。您可以搜索源代码以找到许多示例。基本上你需要你的图表加载你的记录和 window 模式。
示例打开销售订单页面...
//...
SOOrder doc = PXSelect<SOOrder, Where<SOOrder.noteID, Equal<Required<POFixedDemand.refNoteID>>>>.Select(this, line.RefNoteID);
if (doc != null)
{
SOOrderEntry graph = PXGraph.CreateInstance<SOOrderEntry>();
graph.Document.Current = doc;
PXRedirectHelper.TryRedirect(graph, PXRedirectHelper.WindowMode.NewWindow);
}
//...
确切的代码取决于上下文,它是在新的 Graph(使用 'this')还是 GraphExtension(使用 'Base')中,以及您是否想要 select 中的销售订单新页面。
最常见的方法是创建所需屏幕的图形(在本例中为 SalesOrderEntry)并重定向到该图形。
这是图表扩展的事件处理程序示例,其中 select 为新页面编辑了销售订单:
[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();
}
如果您不需要 select 销售订单,这也应该有效:
[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);
我已经浏览了这里的一些问题,发现了一个重定向到带有一些参数的报告的问题。我只想在“操作”下拉列表下添加一个新操作,它只是用于重定向到 Acumatica 中的新页面。具体来说,我正在向案例页面 (CR306000) 添加一个操作,该按钮会将用户重定向到销售订单页面。我知道代码是用来创建按钮的:
[PXButton]
[PXUIField(DisplayName = "Custom Action Title")]
protected void CustomAction()
{
//stuff
}
public override void Initialize()
{
base.Initialize();
Base.action.AddMenuAction(this.customAction);
}
但是,我只是不知道重定向到新页面的代码是什么。我不确定只是 URL 转到哪个更好,或者是否有办法以不同的方式转到屏幕。
您可以使用PXRedirectRequiredException
打开图表。更好的是我喜欢使用 PXRedirectHelper.TryRedirect
。您可以搜索源代码以找到许多示例。基本上你需要你的图表加载你的记录和 window 模式。
示例打开销售订单页面...
//...
SOOrder doc = PXSelect<SOOrder, Where<SOOrder.noteID, Equal<Required<POFixedDemand.refNoteID>>>>.Select(this, line.RefNoteID);
if (doc != null)
{
SOOrderEntry graph = PXGraph.CreateInstance<SOOrderEntry>();
graph.Document.Current = doc;
PXRedirectHelper.TryRedirect(graph, PXRedirectHelper.WindowMode.NewWindow);
}
//...
确切的代码取决于上下文,它是在新的 Graph(使用 'this')还是 GraphExtension(使用 'Base')中,以及您是否想要 select 中的销售订单新页面。
最常见的方法是创建所需屏幕的图形(在本例中为 SalesOrderEntry)并重定向到该图形。
这是图表扩展的事件处理程序示例,其中 select 为新页面编辑了销售订单:
[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();
}
如果您不需要 select 销售订单,这也应该有效:
[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);