Is there a key mapping configuration that will let me select the current row, move down to the cell beneath the current one, and select that row (so the row is selected and the active cell is the BelowCell)?
I've been trying with something along these lines:new GridKeyActionMapping( Keys.Down, UltraGridAction.ToggleRowSel, UltraGridState.IsDroppedDown, 0, 0, 0 ) );new GridKeyActionMapping( Keys.Down, UltraGridAction.BelowCell, UltraGridState.IsDroppedDown, 0, 0, 0 ) );new GridKeyActionMapping( Keys.Down, UltraGridAction.ToggleRowSel, UltraGridState.IsDroppedDown, 0, 0, 0 ) );
But while it moves down - the new row isn't selected and the previous row is not unselected. Any advice?
No, there is no way to do this. This has nothing to do with the KeyActionMappings specifically. You cannot select a row in the grid and also have a cell in edit mode. These two conditions are mutually exclusive. Once a cell enters edit mode, the row selection is cleared. This is pretty much a standard of Windows applications.
I think I was looking for something a bit different. I didn't want the cell to enter EditMode rather I wanted it to become Active. Actually, I worked around my troubles by keeping the CellClickAction as RowSelect and then handling changes in the ActiveItem specifically to track which cell was being clicked on etc. Seems to work fine with 1 minor issue:
During range selection (holding SHIFT + [UP or DOWN arrow]) - it works fine if you have a ROW selected and no active cell. However, if you have a row selected AND an active cell, the grid does not automatically extend the range selection when you use the keyboard navigation described above. Instead, it seems to adjust the active row and selected row separately rather than extending the range as you keyboard down or up.
Do you know how I can get the grid to behave like the default case even if I have a cell that is active?
I'm having a hard time wrapping my mind around what you are trying to do here. But it sounds to me like the pivot item is incorrect.
Whenever you do range selection, the grid uses a PivotItem to determine the beginning of the range. So it sounds like something you are doing it selecting or activating a row, but the PivotItem is not getting updated.
To fix this, you can cast the grid into an ISelectionManager and call the SetPivotItem method and pass in the row or cell that should begin the range selection.