我有一个显示 ARRegister.RefNbr 的用户字段。此用户字段包含在 APTran 网格中。用户实际上创建了带有自定义操作的 AR 发票,并且新的 AR 文档 ref nbr 被保存到 APTran 网格中。我希望将用户字段制作为超链接(类似于 SO 装运订单选项卡中的库存收据参考号)。我应该使用 PXSelector 控件吗?合适的属性是什么?目标是在用户单击用户字段时打开 AR 发票屏幕。
2 回答
有一种通用方法允许您将链接添加到网格单元格,而不是基于选择器或其他任何东西。要实现它,您必须执行以下步骤:
1.在您的图表中定义一个处理重定向的操作。像这样的东西:
public PXAction<YourMainDAC> ViewInvoice;
[PXButton]
protected virtual void viewInvoice()
{
ARTran row = Transactions.Current;
string docType = //get Doc Type from the tran record
string refNbr = //get Ref Nbr from the tran record
ARInvoice invoice = PXSelect<ARInvoice,
Where<ARInvoice.docType, Equal<Required<ARInvoice.docType>>,
And<ARInvoice.refNbr, Equal<Required<ARInvoice.refNbr>>>>>
.Select(this, row.YourDocTypeField, row.YourRefNbrField);
// Create the instance of the destination graph
ARInvoiceEntry graph = PXGraph.CreateInstance<ARInvoiceEntry>();
graph.Document.Current = invoice;
// If the invoice is found, throw an exception to open
// a new window (tab) in the browser
if (graph.Document.Current != null)
{
throw new PXRedirectRequiredException(graph, true, "AR Invoice");
}
}
2.在.aspx页面定义中添加与新动作对应的回调命令(替换为您页面上s网格grid
的ID ):ARTran
<px:PXDataSource ID="ds" ... >
<CallbackCommands>
<px:PXDSCallbackCommand Name="ViewInvoice"
Visible="False"
DependOnGrid="grid">
</px:PXDSCallbackCommand>
</CallbackCommands>
</px:PXDataSource>
3.在要添加链接的网格列中,指定链接命令指向上述内容PXDSCallbackCommand
:
<px:PXGridColumn DataField="InvoiceNbrOrSomething"
LinkCommand="ViewInvoice">
</px:PXGridColumn>
这是定义链接的有点冗长的方法,但首先,它不会对添加链接的字段施加任何限制,并且它还使您可以完全控制要打开的图形以及在那里显示的内容。
注意:您可能还需要SyncPosition="true"
在 aspx 中设置网格控件。
该示例改编自 Acumatica T200 培训指南中的示例 3.4。您可能想查看它以获得一些详尽的解释和更多信息。
如果您有一个链接到标准 Acumatica 表的选择器,例如添加包含针对 InventoryItem 或 ARInvoice 的选择器的自定义字段,您可以在包含自定义字段的页面中的字段上设置 AllowEdit=True。这将自动添加超链接。如果您的字段不包含选择器,则除非为段设置,否则它将不起作用。
我们将自定义表添加到我们想要超链接的项目中。只要您在 DAC 上添加 PXPrimaryGraph 属性,您就应该能够为完整的自定义页面/dac 执行相同的操作。
我们开始使用 LinkCommand,但 AllowEdit 方法使代码保持简单,无需自定义逻辑来支持链接。比转到字段主图更复杂的逻辑需要链接命令。