Thanks,
Terry
5 Answers, 1 is accepted
Basically, there should be no problem to tab through the items in edit-mode and no changes have been made to remove that behavior. However, in order to be able to test the issue you specified and provide you with any solution, I would need more details about your application. Do you have any customized CellTemplates/ CellEditTemplate ? Any relevant code-snippet would be helpful.
Maya
the Telerik team
I've included the XAML below. What happens is when I tab out of the StartTime (2nd column) or EndTime (3rd column) I get a RowValiidating and RowEnded event. However if I click the next field to edit it, this does not happen. So is it an issue with the RadTimePicker KeyDown event deciding the tab is ending the row edit? This worked correctly in the past.
I've also included the KeyDown event code, but I don't see how that could be the issue.
I'm using v 2010.2.924.1040.
Thanks,
Terry
<radGridView:RadGridView x:Name="gvTimeSheet" AutoGenerateColumns="False" AddingNewDataItem="gvTimeSheet_AddingNewDataItem" IsSynchronizedWithCurrentItem="True" ShowGroupPanel="False" RowValidating="gvTimeSheet_RowValidating" CanUserSelect="True" SelectionMode="Extended" IsFilteringAllowed="False" IsReadOnly="False" CanUserInsertRows="True" ShowColumnFooters="False" ShowGroupFooters="False" RowEditEnded="gvTimeSheet_RowEditEnded" TabNavigation="Once" > <radNav:RadContextMenu.ContextMenu> <radNav:RadContextMenu x:Name="Context_Menu" ItemClick="Context_Menu_ItemClick" Opened="Context_Menu_Opened"> <radNav:RadMenuItem Header="Delete this charge" /> </radNav:RadContextMenu> </radNav:RadContextMenu.ContextMenu> <radGridView:RadGridView.Columns> <radGridView:GridViewDataColumn Header="Date" DataMemberBinding="{Binding StartDate, Mode=TwoWay}" > <radGridView:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding StartDate, Converter={StaticResource DateToStringConverter2}}" /> </DataTemplate> </radGridView:GridViewDataColumn.CellTemplate> <radGridView:GridViewDataColumn.CellEditTemplate> <DataTemplate> <radInput:RadDatePicker Loaded="Editor_Loaded" KeyDown="RadDatePicker_KeyDown" SelectionChanged="RadDatePicker_SelectionChanged" SelectedDate="{Binding StartDate, Mode=TwoWay}" DisplayDateChanged="RadDatePicker_DisplayDateChanged" /> </DataTemplate> </radGridView:GridViewDataColumn.CellEditTemplate> </radGridView:GridViewDataColumn> <!-- Start Time --> <radGridView:GridViewDataColumn Header="Start Time" DataMemberBinding="{Binding StartTimeSpan, Mode=TwoWay}"> <radGridView:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding StartTimeSpan, Converter={StaticResource TimeSpanToStringConverter}}" /> </DataTemplate> </radGridView:GridViewDataColumn.CellTemplate> <radGridView:GridViewDataColumn.CellEditTemplate> <DataTemplate> <radInput:RadTimePicker x:Name="StartTimePicker" TimeInterval="0:15:0" SelectedTime="{Binding StartTimeSpan, Mode=TwoWay}" KeyDown="TimePicker_KeyDown" /> </DataTemplate> </radGridView:GridViewDataColumn.CellEditTemplate> </radGridView:GridViewDataColumn> <!-- End Time --> <radGridView:GridViewDataColumn Header="End Time" DataMemberBinding="{Binding EndTimeSpan, Mode=TwoWay}"> <radGridView:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding EndTimeSpan, Converter={StaticResource TimeSpanToStringConverter}}" /> </DataTemplate> </radGridView:GridViewDataColumn.CellTemplate> <radGridView:GridViewDataColumn.CellEditTemplate> <DataTemplate> <radInput:RadTimePicker TimeInterval="0:15:0" SelectedTime="{Binding EndTimeSpan, Mode=TwoWay}" KeyDown="TimePicker_KeyDown" /> </DataTemplate> </radGridView:GridViewDataColumn.CellEditTemplate> </radGridView:GridViewDataColumn> <!-- Customer --> <radGridView:GridViewComboBoxColumn x:Name="cboCustomer" DataMemberBinding="{Binding CustomerID, Mode=TwoWay}" Header="Customer" DisplayMemberPath="CustName" SelectedValueMemberPath="CustomerID" /> <!-- Project --> <radGridView:GridViewDataColumn Header="Project" DataMemberBinding="{Binding ProjectID, Mode=TwoWay}" > <radGridView:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding ProjName}" Loaded="TextBlock_Loaded" /> </DataTemplate> </radGridView:GridViewDataColumn.CellTemplate> <radGridView:GridViewDataColumn.CellEditTemplate> <DataTemplate> <radInput:RadComboBox x:Name="cboProject" DisplayMemberPath="ProjName" Text="{Binding ProjName, Mode=TwoWay}" SelectedValue="{Binding ProjectID, Mode=TwoWay}" Loaded="cboProject_Loaded" SelectionChanged="cboProject_SelectionChanged" /> </DataTemplate> </radGridView:GridViewDataColumn.CellEditTemplate> </radGridView:GridViewDataColumn> <!-- Description --> <radGridView:GridViewDataColumn Header="Description" DataMemberBinding="{Binding Description, Mode=TwoWay}"> <radGridView:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Description}" /> </DataTemplate> </radGridView:GridViewDataColumn.CellTemplate> <radGridView:GridViewDataColumn.CellEditTemplate> <DataTemplate> <TextBox Text="{Binding Description, Mode=TwoWay}"/> </DataTemplate> </radGridView:GridViewDataColumn.CellEditTemplate> </radGridView:GridViewDataColumn> </radGridView:RadGridView.Columns> </radGridView:RadGridView> The TimePicker event code:
private void TimePicker_KeyDown( object sender, KeyEventArgs e ) { Telerik.Windows.Controls.RadTimePicker TimePicker = sender as Telerik.Windows.Controls.RadTimePicker; if ( !TimePicker.SelectedTime.HasValue ) { TimePicker.SelectedTime = DateTime.Now.TimeOfDay; } switch ( e.Key ) { case System.Windows.Input.Key.Add: if ( TimePicker.SelectedTime.Value == new TimeSpan( 23, 45, 0 ) ) { TimePicker.SelectedTime = new TimeSpan( 0, 0, 0 ); } else { TimePicker.SelectedTime = TimePicker.SelectedTime.Value.Add( TimeSpan.FromMinutes( 15 ) ); } e.Handled = true; break; case System.Windows.Input.Key.Subtract: if ( TimePicker.SelectedTime.Value == new TimeSpan( 0, 0, 0 ) ) { TimePicker.SelectedTime = new TimeSpan( 23, 45, 0 ); } else { TimePicker.SelectedTime = TimePicker.SelectedTime.Value.Add( TimeSpan.FromMinutes( -15 ) ); } e.Handled = true; break; } } Using the code-snippet you provided, I tried to reproduce the issue you described, but I was not able to. I am sending you the sample project I used for testing it. Please take a look at it and share if there is any misunderstandings according to your requirements.
Maya
the Telerik team
I can't build this application:
Error 1 The type or namespace name 'RadGridView' could not be found (are you missing a using directive or an assembly reference?) C:\aaa\Code\Test\TabOut_EditMode\TabOut_EditMode\obj\Debug\MainPage.g.i.cs 40 18 TabOut_EditMode
Error 2 The type or namespace name 'RadContextMenu' could not be found (are you missing a using directive or an assembly reference?) C:\aaa\Code\Test\TabOut_EditMode\TabOut_EditMode\obj\Debug\MainPage.g.i.cs 42 18 TabOut_EditMode
Thanks,
Terry
Did you have the references pointing the necessary Telerik assemblies added ? If so, may you check in the properties of the solution whether it is targeting Silverlight 3 or Silverlight 4 ? Also, please try out if all the assemblies are for Silverlight 4.
Maya
the Telerik team