Cannot select all rows on Ctrl + A
Hello,
I have experienced unexpected behavior in SfDataGrid, where the standard Windows Ctrl+A combination is not available. I spent lots of time trying to get it to work, but it seems blocked at some level. I noticed that In the provided WPF samples, Ctrl+A (SelectAll command) was also doing nothing. When I command bind to other key combinations, like Ctrl+P in the example below, I can run the command, but I need users to have the standard Windows expericence. How can use Ctrl+A to select all grid rows?
public static RoutedCommand MyCommand = new RoutedCommand();
...
MyCommand.InputGestures.Add(new KeyGesture(Key.P, ModifierKeys.Control));
private void SelectAllCommandEx(object sender, ExecutedRoutedEventArgs e)
{
sfDataGrid.SelectRows(2, sfDataGrid.GetRecordsCount());
}
Another bug I encountered was that the filter row (FilterRowPosition="FixedTop") in the sfDataGrid was also selected with SelectRows(1, EndRow), which is unusual, because i cannot imagine a scenario in which the Filter Row should be selected alongside normal rows. The filter row also seems to get the row index, which requires adding offsets to regular rows.
I have experienced unexpected behavior in SfDataGrid, where the standard Windows Ctrl+A combination is not available. I spent lots of time trying to get it to work, but it seems blocked at some level. I noticed that In the provided WPF samples, Ctrl+A (SelectAll command) was also doing nothing. When I command bind to other key combinations, like Ctrl+P in the example below, I can run the command, but I need users to have the standard Windows expericence. How can use Ctrl+A to select all grid rows?
public static RoutedCommand MyCommand = new RoutedCommand();
...
MyCommand.InputGestures.Add(new KeyGesture(Key.P, ModifierKeys.Control));
private void SelectAllCommandEx(object sender, ExecutedRoutedEventArgs e)
{
sfDataGrid.SelectRows(2, sfDataGrid.GetRecordsCount());
}
Another bug I encountered was that the filter row (FilterRowPosition="FixedTop") in the sfDataGrid was also selected with SelectRows(1, EndRow), which is unusual, because i cannot imagine a scenario in which the Filter Row should be selected alongside normal rows. The filter row also seems to get the row index, which requires adding offsets to regular rows.
SIGN IN To post a reply.
7 Replies
SV
Srinivasan Vasu
Syncfusion Team
May 24, 2016 06:29 AM UTC
Hi Andrey,
| Query 1[Ctrl + A]: | We have analyzed your query and the SfDataGrid will process Keyboard and Mouse interactions based on GridCell. Hence, the RoutedCommand is not worked for Window. But you can achieve your requirement by overriding ProcessKeyDown method from GridSelectionController in SfDataGrid. Please refer the below code example.
| |
| Query 2[FilterRowPosition]: | In SfDatagrid, we will process the selection and navigation for other than data rows like FilerRow, AddNewRow and UnboundRow which is default behavior of SfDataGrid. If you want to process the selection excluding the FilterRow in SelectRows method, please use GridFirstDataRowIndex helper method instead proceeding the value directly. Please refer the below code example.
|
Sample Location: SelectRow
Regards,
Srinivasan
SV
Srinivasan Vasu
Syncfusion Team
May 24, 2016 02:05 PM UTC
| Hi Andrey, Please ignore our previous update.
Sample Location: SelectRow Regards, Srinivasan |
AN
Andrey
May 25, 2016 02:57 PM UTC
Srinivasan , thank you for your reply. I have tested the solution you offered for Query 1, but it seems suboptimal, because although it does allow to select rows on Ctrl+A, it breaks all other key down events in sfDataGrid (like Key.Down/Up, Page.Down/Up, Home, End, etc).
ProcessKeyDown is a large method with complex logic, so it seems to be an overkill to try and recreate it all in the override, just for the sake of SelectAll. Is there any simpler solution to the Ctrl+A problem?
ProcessKeyDown is a large method with complex logic, so it seems to be an overkill to try and recreate it all in the override, just for the sake of SelectAll. Is there any simpler solution to the Ctrl+A problem?
SV
Srinivasan Vasu
Syncfusion Team
May 26, 2016 06:13 AM UTC
Hi Andrey,
Sorry about the inconvenience and please ignore our previous code example. Please find the correct one below.
C#
| this.sfdatagrid.SelectionController = new Controller(sfdatagrid); public class Controller : GridSelectionController { public Controller(SfDataGrid sfdatagrid) : base(sfdatagrid) { } protected override void ProcessKeyDown(KeyEventArgs args) { if (Keyboard.IsKeyDown(Key.A) && SelectionHelper.CheckControlKeyPressed()) { this.DataGrid.SelectionController.ClearSelections(false); this.DataGrid.SelectRows(1, 10); return; } base.ProcessKeyDown(args); // Base method calling } } |
Sample Location: SelectRows
Regards,
Srinivasan
SV
Srinivasan Vasu
Syncfusion Team
May 26, 2016 06:27 AM UTC
Hi Andrey,
Sorry about the inconvenience and please ignore our previous code example. Please find the correct one below.
C#
| this.sfdatagrid.SelectionController = new Controller(sfdatagrid); public class Controller : GridSelectionController { public Controller(SfDataGrid sfdatagrid) : base(sfdatagrid) { } protected override void ProcessKeyDown(KeyEventArgs args) { if (Keyboard.IsKeyDown(Key.A) && SelectionHelper.CheckControlKeyPressed()) { this.DataGrid.SelectionController.ClearSelections(false); this.DataGrid.SelectRows(1, this.DataGrid.GetLastDataRowIndex()); return; } base.ProcessKeyDown(args); // Base method calling } } |
Sample Location: SelectRows
Regards,
Srinivasan
Srinivasan
AN
Andrey
May 26, 2016 02:24 PM UTC
Srinivasan,
thank you for the updated code! It is working great now.
thank you for the updated code! It is working great now.
JG
Jai Ganesh S
Syncfusion Team
May 27, 2016 03:44 AM UTC
Hi Andrey,
Thank you for the update.
Please let us know if you need further assistance on this.
Regards,
Jai Ganesh S
SIGN IN To post a reply.
- 7 Replies
- 3 Participants
-
AN Andrey
- May 22, 2016 10:16 PM UTC
- May 27, 2016 03:44 AM UTC