我有一个显示ARRegister.RefNbr的用户字段。此用户字段包含在APTran网格中。用户实际创建带有自定义操作的AR发票,新AR文档参考将保存到APTran网格。我希望将用户字段设置为超链接(类似于库存收货参考编号,在SO货运单选项卡中)。我应该使用PXSelector控件吗?什么是正确的属性?目标是在用户单击用户字段时打开AR发票屏幕。
答案 0 :(得分:7)
有一种通用方法允许您添加到网格单元格的链接,而不是基于选择器或其他任何内容。要实现它,您必须执行以下步骤:
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页面定义中添加一个与新操作相对应的回调命令(将grid
替换为页面上ARTran
网格的ID):
<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>
这是定义链接的一种冗长方式,但首先,它不会对添加链接的字段施加任何约束,而且还可以完全控制要打开的图形以及在那里显示的内容。 / p>
注意:您可能还需要在aspx中的网格控件上设置SyncPosition="true"
。
该示例改编自Acumatica T200培训指南中的示例3.4。您可能需要查看它以获得一些详尽的解释和更多信息。
答案 1 :(得分:3)
如果您有一个链接到标准Acumatica表的选择器,例如添加包含针对InventoryItem或ARInvoice的选择器的自定义字段,您可以在包含自定义字段的页面中的字段上设置AllowEdit = True。这将自动添加超链接。如果您的字段不包含选择器,则除非可以设置段,否则它将无效。
我们在项目中添加了自定义表格,我们想要超链接。只要在DAC上添加PXPrimaryGraph属性,您就可以对完整的自定义页面/ dac执行相同的操作。
我们开始使用LinkCommand,但AllowEdit方法使代码简单,无需自定义逻辑来支持链接。比转到字段主图更复杂的逻辑需要一个linkcommand。