Поиск…


Создание раскрывающегося меню для экрана

Предположим, вам нужно определить раскрывающееся меню для конкретного экрана Acumatica, например меню «Отчеты» на следующем снимке экрана.

введите описание изображения здесь

Это может быть достигнуто тремя различными способами:

  • Добавив панель инструментов с пунктом меню в ASPX экрана
  • Объявив специальное действие «папки» на график и добавив пункты меню в код
  • Используя подсистему автоматизации Acumatica Framework (не охватываемую этим примером)

Вариант 1. Создание раскрывающегося меню в ASPX

Прежде всего, убедитесь, что элемент PXDataSource страницы ASPX содержит все необходимые команды, соответствующие действиям графа, которые вы хотите выполнить при нажатии на элемент меню.

<px:PXDataSource 
    ID="ds" runat="server" Visible="True" PrimaryView="TranslHistRecords" TypeName="PX.Objects.CM.TranslationHistoryMaint">
    <CallbackCommands>
        ...
        <px:PXDSCallbackCommand Name="TranslationDetailsReport" Visible="False"/>
        ...
    </CallbackCommands>
</px:PXDataSource>

Затем добавьте отдельный элемент панели инструментов сразу после элемента PXDataSource. В нем определите PXToolbarButton с нужными выпадающими меню, ссылающимися на соответствующие команды источника данных, как показано в следующем коде.

<px:PXToolBar ID="toolbar1" runat="server" SkinID="Navigation" BackColor="Transparent" CommandSourceID="ds">
    <Items>
        <px:PXToolBarButton Text="Reports">
            <MenuItems>
                <px:PXMenuItem Text="Translation Details" CommandSourceID="ds" CommandName="TranslationDetailsReport"/>
            </MenuItems>
        </px:PXToolBarButton>
    </Items>
    <Layout ItemsAlign="Left" />
</px:PXToolBar>

Эта опция может показаться соблазнительной из-за ее простоты; однако есть один важный недостаток . Если вы выберете такое выпадающее меню на экране с индикатором обработки (например, экраном выпуска документа или экраном массовой обработки), индикатор появится слева от выпадающего меню, как показано ниже.

введите описание изображения здесь

Если это нежелательно, подумайте об определении выпадающего меню в коде, как описано в разделе «Вариант 2» ниже.

Вариант 2. Создание меню на графике

Во-первых, на графике страницы объявите действие «папка», которое будет соответствовать кнопке выпадающего меню.

public PXAction<TranslationHistory> reportsFolder;
[PXUIField(DisplayName = "Reports", MapEnableRights = PXCacheRights.Select)]
[PXButton(SpecialType = PXSpecialButtonType.Report)]
protected virtual IEnumerable Reportsfolder(PXAdapter adapter)
{
    return adapter.Get();
}

Далее, в конструкторе графика укажите, что действие действительно является выпадающим меню и добавляет все действия, которые должны отображаться в виде пунктов меню, как показано ниже.

public TranslationHistoryMaint()
{
    this.reportsFolder.MenuAutoOpen = true;
    this.reportsFolder.AddMenuAction(this.translationDetailsReport);
}

Если вы выберете этот подход, индикатор обработки всегда будет отображаться справа от вашего меню, что, возможно, лучше UX.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow