У меня есть пользовательское поле, в котором отображается ARRegister.RefNbr. Это пользовательское поле содержится в сетке APTran. Пользователь фактически создает счет-фактуру AR с настраиваемым действием, и новый номер документа AR сохраняется в сетке 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 добавьте команду обратного вызова, соответствующую новому действию (замените grid
идентификатором сетки ARTran
s на вашей странице):
<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.
Пример адаптирован из Примера 3.4 в учебном руководстве Acumatica T200. Вы можете проверить это, чтобы получить подробные объяснения и дополнительную информацию.
Если у вас есть селектор, связанный со стандартной таблицей Acumatica, например добавление настраиваемого поля, содержащего селектор для InventoryItem или ARInvoice, вы можете установить AllowEdit = True в своем поле на странице, содержащей ваше настраиваемое поле. Это автоматически добавит гиперссылку. Если ваше поле не содержит селектора, он не будет работать, если только он не настроен для сегментов.
У нас есть настраиваемые таблицы, которые мы добавили в наш проект, где нам нужны гиперссылки. Пока вы добавляете атрибут PXPrimaryGraph в свой ЦАП, вы должны иметь возможность делать то же самое для полной настраиваемой страницы / ЦАП.
Мы начали с использования LinkCommand, но подход AllowEdit сохраняет код простым без необходимости настраивать логику для поддержки ссылки. Более сложная логика, чем переход к первичному графу полей, потребует команды link.
AllowEdit
недоступно в вашем селекторе, попробуйте следующее: stackoverflow.com/a/65415461/3718361
- person Deetz; 22.12.2020