This is a migrated thread and some comments may be shown as answers.

Custom KeyboardCommandProvider for nested grids

0 Answers 63 Views
GridView
This is a migrated thread and some comments may be shown as answers.
vk
Top achievements
Rank 1
vk asked on 16 May 2012, 07:57 AM
Hi,

I have a child gridview declared in HierarchyChildTemplate section of the main gridview. When I insert a row in this inner gridview using InsertRow panel and press Enter key the selected row of the parent gridview changes. Is it a bug? How can I prevent parent row changing?

I have implemented a custom KeyboardCommandProvider and assigned it to the parent gridview. Can I provide different  commands for my parent and child grids? For instance, if a user edits a cell in the parent row and presses the Enter key I send MoveNext command to the parent grid, and if it a row in the child grid then I would leave it by default (MoveDown)?

Update: I figured it out.  As for the first question, in the RowEditEnded event for the inner grid I should check if it is a GridViewNewRow then I set the grid's selected item to the inserted one:

void GridView_RowEditEnded(object sender, GridViewRowEditEndedEventArgs e)
{
     if (e.EditAction == GridViewEditAction.Commit)
     {
          var grid = sender as RadGridView;
          if (e.Row is GridViewNewRow)
          {
               grid.SelectedItem = e.Row.Item;
               grid.CurrentItem = grid.SelectedItem;
          }
     }
}

As for my second question, I use the child grid's Loaded event to set my custom keyboard command provider:

void childGridView_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
   var grid = sender as RadGridView;
   grid.KeyboardCommandProvider = new CustomKeyboardCommandProvider(grid);
}

No answers yet. Maybe you can help?

Tags
GridView
Asked by
vk
Top achievements
Rank 1
Share this question
or