為螢幕建立下拉選單
假設你需要為特定的 Acumatica 螢幕定義下拉選單,例如以下螢幕截圖中的 Reports 選單。
這可以通過三種不同的方式實現:
- 通過向螢幕的 ASPX 新增帶有選單項的工具欄
- 通過向圖形宣告一個特殊的資料夾操作並在程式碼中新增選單項
- 通過使用 Acumatica 框架的自動化子系統(本示例未涵蓋)
選項 1:在 ASPX 中建立下拉選單
首先,確保 ASPX 頁面的 PXDataSource 元素包含與單擊選單項時要執行的圖形操作相對應的所有必要命令。
<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);
}
如果選擇此方法,處理指示器將始終顯示在選單的右側,這可以說是更好的使用者體驗。