Skip to main content
Question

Modern UI: keyboard access to a read-only grid column that opens a dialog

  • September 23, 2026
  • 2 replies
  • 36 views

Environment: Acumatica 2026 R1 (SaaS), Modern UI, screen EP305000 (Employee Time Cards). We’re new to Acumatica and building our first customizations.

We've added a custom column to the Time Entry Summary grid that opens a dialog for the selected row. It works perfectly with a mouse. We cannot find any way to reach or activate it from the keyboard, and we've run out of documented options. 

Classic UI has PXDSCallbackCommand.ShortcutKey for binding a key combination to a callback command. What replaces it in the Modern UI? We'd be happy with a screen-level hotkey that acts on the currently selected row — it doesn't have to be cell focus.

What we built

An unbound field on a cache extension — no database column, value computed server-side:

public sealed class EPTimeCardSummaryNoteStatusExt
: PXCacheExtension<TimeCardMaint.EPTimeCardSummaryWithInfo>
{
public abstract class usrNoteStatus : IBqlField { }

[PXString(24, IsUnicode = true)]
[PXUIField(DisplayName = "Daily Notes")]
public string UsrNoteStatus { get; set; }
}

It's populated in EPTimeCardSummaryWithInfo_RowSelected and displays values like 1 of 3.

The column is declared in a TypeScript extension of the stock view class:

@gridConfig({
preset: GridPreset.Details,
initNewRow: true,
repaintColumns: true,
defaultAction: "ShowDailyNotesWeek",
})
export class EPTimeCardSummary_BXDailyNotes_BXDailyNotes {
@linkCommand("ShowDailyNotesWeek")
@columnConfig({ type: GridColumnType.HyperLink, allowUpdate: false })
UsrNoteStatus: PXFieldState;

ShowDailyNotesWeek: PXActionState;
}

 

ShowDailyNotesWeek is a PXAction<TimeCardMaint.EPTimeCardSummaryWithInfo> on a TimeCardMaint graph extension, marked [PXLookupButton], which opens a qp-panel via AskExt().

 

 

2 replies

  • Freshman II
  • September 23, 2026

Hi, I think you can try to use something like that.
 

[PXButton(CommitChanges = true,ShortcutChar = char, ShortcutCtrl = bool, ShortcutShift = bool)]

Acumatica Developers used that in CRActivityMaint.
 

public PXAction<CRActivity> MarkAsCompletedAndFollowUp;

Let us know if this will help you.


Steve Milner
Varsity III
Forum|alt.badge.img+4
  • Varsity III
  • September 23, 2026

@akulberg Takisawa's attribute is the replacement. ShortcutChar, ShortcutCtrl and ShortcutShift on PXButton are what the Modern UI reads now.

It won't fire on ShowDailyNotesWeek, though. Declaring the action in the grid's view class puts it on the table toolbar, and the Modern UI only listens for shortcuts on form toolbar buttons.

For a screen-level hotkey, add a second action on the primary DAC and leave it out of the TypeScript. It lands on the form toolbar, and Summary.Current is still the selected row when it runs, so your handler works unchanged:

public PXAction<EPTimeCard> ShowDailyNotesKey;
[PXUIField(DisplayName = "Daily Notes")]
[PXButton(ShortcutCtrl = true, ShortcutShift = true, ShortcutChar = 'L')]
protected virtual IEnumerable showDailyNotesKey(PXAdapter adapter)
    => showDailyNotesWeek(adapter);

Ctrl+Shift+L then opens your dialog for the selected Summary row. The arrow keys move between rows, and the shortcut works even while a cell is being edited. Keep the button visible, since hidden or disabled buttons don't respond to shortcuts. Your column link stays as it is.

Your defaultAction won't get you there. Enter on this grid starts editing because the grid is editable, and defaultAction only runs on Enter when the grid is read-only.