Hi ,
I have created grid which shows weekly workhours when i end the value of hours from grid cell the value is updated but after celleditended event is finished , i get following error:
System.NullReferenceException: Object reference not set to an instance of an object.
at Telerik.Windows.Controls.GridView.GridViewCell.RaiseCellEditEndedEvent(GridViewEditAction editAction)
at Telerik.Windows.Controls.GridView.GridViewDataControl.PerformCellEditEnded(GridViewCell currentCell)
at Telerik.Windows.Controls.GridView.GridViewDataControl.CommitCellEdit(GridViewCell currentCell, Boolean isLeavingRow)
at Telerik.Windows.Controls.GridView.GridViewDataControl.CommitEdit()
at Telerik.Windows.Controls.GridView.GridViewDataControl.OnCommitEditCommand(Object sender, ExecutedRoutedEventArgs e)
at System.Windows.Input.CommandBinding.OnExecuted(Object sender, ExecutedRoutedEventArgs e)
at System.Windows.Input.CommandManager.ExecuteCommandBinding(Object sender, ExecutedRoutedEventArgs e, CommandBinding commandBinding)
at System.Windows.Input.CommandManager.FindCommandBinding(CommandBindingCollection commandBindings, Object sender, RoutedEventArgs e, ICommand command, Boolean execute)
at System.Windows.Input.CommandManager.FindCommandBinding(Object sender, RoutedEventArgs e, ICommand command, Boolean execute)
at System.Windows.Input.CommandManager.OnExecuted(Object sender, ExecutedRoutedEventArgs e)
at System.Windows.UIElement.OnExecutedThunk(Object sender, ExecutedRoutedEventArgs e)
at System.Windows.Input.ExecutedRoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object target)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
at System.Windows.Input.RoutedCommand.ExecuteImpl(Object parameter, IInputElement target, Boolean userInitiated)
at System.Windows.Input.RoutedCommand.Execute(Object parameter, IInputElement target)
at Telerik.Windows.Controls.GridView.GridViewDataControl.ExecutePendingCommand()
at Telerik.Windows.Controls.GridView.GridViewDataControl.PendAndExecuteCommands(KeyEventArgs e)
at Telerik.Windows.Controls.GridView.GridViewDataControl.OnKeyDown(KeyEventArgs e)
at System.Windows.UIElement.OnKeyDownThunk(Object sender, KeyEventArgs e)
at System.Windows.Input.KeyEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
Here is my xaml for grid
<telerik:RadGridView ActionOnLostFocus="None" RowIndicatorVisibility="Collapsed" GridLinesVisibility="Both" x:Name="grdTimeRecording" IsReadOnlyBinding="{Binding Path=IsLastRow}" Grid.Row="1" AutoGenerateColumns="False" CellEditEnded="GrdTimeRecording_OnCellEditEnded" >
<telerik:RadGridView.ColumnGroups>
<telerik:GridViewColumnGroup HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}" Name="Monday"
Header="Mon" />
<telerik:GridViewColumnGroup HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}" Name="Tuesday"
Header="Tue" />
<telerik:GridViewColumnGroup Name="Wednesday" HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}"
Header="Wed" />
<telerik:GridViewColumnGroup Name="Thursday" HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}"
Header="Thu" />
<telerik:GridViewColumnGroup Name="Friday" HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}"
Header="Fri" />
<telerik:GridViewColumnGroup Name="Saturday" HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}"
Header="Sat" />
<telerik:GridViewColumnGroup Name="Sunday" HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}"
Header="Sun" />
<telerik:GridViewColumnGroup Name="Project" HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}"
Header="" />
<telerik:GridViewColumnGroup Name="Sum" HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}"
Header="Sum" />
</telerik:RadGridView.ColumnGroups>
<telerik:RadGridView.Columns>
<telerik:GridViewColumn Header="" ColumnGroupName="Project" Background="{DynamicResource ControlBackgroundLight}" IsReadOnly="True">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" Background="{DynamicResource ControlBackgroundLight}">
<!--<Grid.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFC8D2D7" Offset="0" />
<GradientStop Color="#FFE1EBF0" Offset="1" />
</LinearGradientBrush>
</Grid.Background>-->
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding Path=projectId,Converter={StaticResource ProjectIconConverter}}" Grid.Column="0" Margin="3" ></Image>
<TextBlock x:Name="projectId" Visibility="Visible" Grid.Column="1" Text="{Binding Path=ID}"></TextBlock>
<TextBlock VerticalAlignment="Center" Grid.Column="2" Tag="TabularZE" Text="{Binding Path=projectId,Converter={StaticResource ProjectTitleConverter},ConverterParameter=RootNodeAsSum}" x:Name="txtProject" HorizontalAlignment="Stretch" TextBlock.TextAlignment="Left" TextWrapping="NoWrap" TextTrimming="WordEllipsis" />
</Grid>
</Border>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=projectId}" Value="0">
<Setter TargetName="txtProject" Property="Text" Value="Summe"/>
<!--<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFC8D2D7" Offset="0" />
<GradientStop Color="#FFE1EBF0" Offset="1" />
</LinearGradientBrush>
</Setter.Value>-->
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
<telerik:GridViewDataColumn Header="Std" ColumnGroupName="Monday" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" TextAlignment="Right" Text="{Binding Path=MondayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtStd" Text="{Binding Path=MondayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="(LB)" ColumnGroupName="Monday" IsReadOnly="True" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=MondayLB,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Std" ColumnGroupName="Tuesday" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=TuesdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtStd" TextChanged="TxtStd_OnTextChanged" Text="{Binding Path=TuesdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="(LB)" ColumnGroupName="Tuesday" IsReadOnly="True" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=TuesdayLB,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Std" ColumnGroupName="Wednesday" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=WednesdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtStd" Text="{Binding Path=WednesdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="(LB)" ColumnGroupName="Wednesday" IsReadOnly="True" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=WednesdayLB,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Std" ColumnGroupName="Thursday" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=ThursdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtStd" Text="{Binding Path=ThursdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="(LB)" ColumnGroupName="Thursday" IsReadOnly="True">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=ThursdayLB,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Std" ColumnGroupName="Friday" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=FridayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtStd" Text="{Binding Path=FridayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="(LB)" ColumnGroupName="Friday" IsReadOnly="True" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=FridayLB,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Std" ColumnGroupName="Saturday" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=SaturdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtStd" Text="{Binding Path=SaturdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="(LB)" ColumnGroupName="Saturday" IsReadOnly="True" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=SaturdayLB,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Std" ColumnGroupName="Sunday" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=SundayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtStd" Text="{Binding Path=SundayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="(LB)" ColumnGroupName="Sunday" IsReadOnly="True" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=SundayLB,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewColumn Header="Sum" ColumnGroupName="Sum" IsReadOnly="True">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<Border BorderThickness="0">
<TextBlock x:Name="txtSummeCol" TextAlignment="Right" Text="{Binding Path=Sum,StringFormat=N}" HorizontalAlignment="Stretch" Padding="3" Margin="0,0,0,-1" VerticalAlignment="Stretch" ></TextBlock>
</Border>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
and here is the c# code
private void FillDataTable()
{
Performances.Clear();
foreach (var node in project)
{
var row = new TabularTimeRecordingModel
{
projectId = node.ID,
project = node.Name,
MondayLB = GetPerformanceBarsTotal(_FirstDate, node.ID),
MondayStd = GetPerformancesTotal(_FirstDate, node.ID),
TuesdayLB = GetPerformanceBarsTotal(_FirstDate.AddDays(1), node.ID),
TuesdayStd = GetPerformancesTotal(_FirstDate.AddDays(1), node.ID),
WednesdayLB = GetPerformanceBarsTotal(_FirstDate.AddDays(2), node.ID),
WednesdayStd = GetPerformancesTotal(_FirstDate.AddDays(2), node.ID),
ThursdayLB = GetPerformanceBarsTotal(_FirstDate.AddDays(3), node.ID),
ThursdayStd = GetPerformancesTotal(_FirstDate.AddDays(3), node.ID),
FridayLB = GetPerformanceBarsTotal(_FirstDate.AddDays(4), node.ID),
FridayStd = GetPerformancesTotal(_FirstDate.AddDays(4), node.ID),
SaturdayLB = GetPerformanceBarsTotal(_FirstDate.AddDays(5), node.ID),
SaturdayStd = GetPerformancesTotal(_FirstDate.AddDays(5), node.ID),
SundayLB = GetPerformanceBarsTotal(_FirstDate.AddDays(6), node.ID),
SundayStd = GetPerformancesTotal(_FirstDate.AddDays(6), node.ID),
Sum = GetProjectsTotal(node.ID)
};
Performances.Add(row);
}
grdTimeRecording.ItemsSource = Performances;
grdTimeRecording.DataContext = Performances;
}
private void GrdTimeRecording_OnCellEditEnded(object sender, GridViewCellEditEndedEventArgs e)
{
var text = GetTextBox((DependencyObject) e.EditingElement).Text;
var dayIndex = (e.Cell.Column.DisplayIndex - 1)/2;
var projectId = ((TabularTimeRecordingModel) (e.OldData)).projectId;
var hours = Convert.ToDouble(text);
UpdatePerformanceHoursByDate(_FirstDate.AddDays(dayIndex), projectId, hours);
e.Handled = true;
}
private void UpdatePerformanceHoursByDate(DateTime date, int projectId, double hours)
{
if (_datachaged)
{
if (TimeRecording[date] == null) RefreshTimeRecording(date);
var recordingDay = TimeRecording[date];
if (recordingDay == null) return;
foreach (var performace in recordingDay.Performances.Where(p => p.ProjectID == projectId))
{
performace.Duration = (int) hours*60;
}
recordingDay.Save();
_datachaged = false;
FillDataTable();
}
}
please suggest me the simple way to solve this issue, i can not use MVVM pattern to refresh the cell value i this case.
I have created grid which shows weekly workhours when i end the value of hours from grid cell the value is updated but after celleditended event is finished , i get following error:
System.NullReferenceException: Object reference not set to an instance of an object.
at Telerik.Windows.Controls.GridView.GridViewCell.RaiseCellEditEndedEvent(GridViewEditAction editAction)
at Telerik.Windows.Controls.GridView.GridViewDataControl.PerformCellEditEnded(GridViewCell currentCell)
at Telerik.Windows.Controls.GridView.GridViewDataControl.CommitCellEdit(GridViewCell currentCell, Boolean isLeavingRow)
at Telerik.Windows.Controls.GridView.GridViewDataControl.CommitEdit()
at Telerik.Windows.Controls.GridView.GridViewDataControl.OnCommitEditCommand(Object sender, ExecutedRoutedEventArgs e)
at System.Windows.Input.CommandBinding.OnExecuted(Object sender, ExecutedRoutedEventArgs e)
at System.Windows.Input.CommandManager.ExecuteCommandBinding(Object sender, ExecutedRoutedEventArgs e, CommandBinding commandBinding)
at System.Windows.Input.CommandManager.FindCommandBinding(CommandBindingCollection commandBindings, Object sender, RoutedEventArgs e, ICommand command, Boolean execute)
at System.Windows.Input.CommandManager.FindCommandBinding(Object sender, RoutedEventArgs e, ICommand command, Boolean execute)
at System.Windows.Input.CommandManager.OnExecuted(Object sender, ExecutedRoutedEventArgs e)
at System.Windows.UIElement.OnExecutedThunk(Object sender, ExecutedRoutedEventArgs e)
at System.Windows.Input.ExecutedRoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object target)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
at System.Windows.Input.RoutedCommand.ExecuteImpl(Object parameter, IInputElement target, Boolean userInitiated)
at System.Windows.Input.RoutedCommand.Execute(Object parameter, IInputElement target)
at Telerik.Windows.Controls.GridView.GridViewDataControl.ExecutePendingCommand()
at Telerik.Windows.Controls.GridView.GridViewDataControl.PendAndExecuteCommands(KeyEventArgs e)
at Telerik.Windows.Controls.GridView.GridViewDataControl.OnKeyDown(KeyEventArgs e)
at System.Windows.UIElement.OnKeyDownThunk(Object sender, KeyEventArgs e)
at System.Windows.Input.KeyEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
Here is my xaml for grid
<telerik:RadGridView ActionOnLostFocus="None" RowIndicatorVisibility="Collapsed" GridLinesVisibility="Both" x:Name="grdTimeRecording" IsReadOnlyBinding="{Binding Path=IsLastRow}" Grid.Row="1" AutoGenerateColumns="False" CellEditEnded="GrdTimeRecording_OnCellEditEnded" >
<telerik:RadGridView.ColumnGroups>
<telerik:GridViewColumnGroup HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}" Name="Monday"
Header="Mon" />
<telerik:GridViewColumnGroup HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}" Name="Tuesday"
Header="Tue" />
<telerik:GridViewColumnGroup Name="Wednesday" HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}"
Header="Wed" />
<telerik:GridViewColumnGroup Name="Thursday" HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}"
Header="Thu" />
<telerik:GridViewColumnGroup Name="Friday" HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}"
Header="Fri" />
<telerik:GridViewColumnGroup Name="Saturday" HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}"
Header="Sat" />
<telerik:GridViewColumnGroup Name="Sunday" HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}"
Header="Sun" />
<telerik:GridViewColumnGroup Name="Project" HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}"
Header="" />
<telerik:GridViewColumnGroup Name="Sum" HeaderStyle="{DynamicResource TelerikCommonColumnHeaderStyle}"
Header="Sum" />
</telerik:RadGridView.ColumnGroups>
<telerik:RadGridView.Columns>
<telerik:GridViewColumn Header="" ColumnGroupName="Project" Background="{DynamicResource ControlBackgroundLight}" IsReadOnly="True">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" Background="{DynamicResource ControlBackgroundLight}">
<!--<Grid.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFC8D2D7" Offset="0" />
<GradientStop Color="#FFE1EBF0" Offset="1" />
</LinearGradientBrush>
</Grid.Background>-->
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding Path=projectId,Converter={StaticResource ProjectIconConverter}}" Grid.Column="0" Margin="3" ></Image>
<TextBlock x:Name="projectId" Visibility="Visible" Grid.Column="1" Text="{Binding Path=ID}"></TextBlock>
<TextBlock VerticalAlignment="Center" Grid.Column="2" Tag="TabularZE" Text="{Binding Path=projectId,Converter={StaticResource ProjectTitleConverter},ConverterParameter=RootNodeAsSum}" x:Name="txtProject" HorizontalAlignment="Stretch" TextBlock.TextAlignment="Left" TextWrapping="NoWrap" TextTrimming="WordEllipsis" />
</Grid>
</Border>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=projectId}" Value="0">
<Setter TargetName="txtProject" Property="Text" Value="Summe"/>
<!--<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFC8D2D7" Offset="0" />
<GradientStop Color="#FFE1EBF0" Offset="1" />
</LinearGradientBrush>
</Setter.Value>-->
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
<telerik:GridViewDataColumn Header="Std" ColumnGroupName="Monday" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" TextAlignment="Right" Text="{Binding Path=MondayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtStd" Text="{Binding Path=MondayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="(LB)" ColumnGroupName="Monday" IsReadOnly="True" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=MondayLB,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Std" ColumnGroupName="Tuesday" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=TuesdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtStd" TextChanged="TxtStd_OnTextChanged" Text="{Binding Path=TuesdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="(LB)" ColumnGroupName="Tuesday" IsReadOnly="True" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=TuesdayLB,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Std" ColumnGroupName="Wednesday" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=WednesdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtStd" Text="{Binding Path=WednesdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="(LB)" ColumnGroupName="Wednesday" IsReadOnly="True" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=WednesdayLB,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Std" ColumnGroupName="Thursday" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=ThursdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtStd" Text="{Binding Path=ThursdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="(LB)" ColumnGroupName="Thursday" IsReadOnly="True">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=ThursdayLB,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Std" ColumnGroupName="Friday" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=FridayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtStd" Text="{Binding Path=FridayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="(LB)" ColumnGroupName="Friday" IsReadOnly="True" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=FridayLB,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Std" ColumnGroupName="Saturday" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=SaturdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtStd" Text="{Binding Path=SaturdayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="(LB)" ColumnGroupName="Saturday" IsReadOnly="True" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=SaturdayLB,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Std" ColumnGroupName="Sunday" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=SundayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txtStd" Text="{Binding Path=SundayStd,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="(LB)" ColumnGroupName="Sunday" IsReadOnly="True" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Border x:Name="border">
<Grid x:Name="grd" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtStd" Text="{Binding Path=SundayLB,StringFormat=N}"/>
</Grid>
</Border>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewColumn Header="Sum" ColumnGroupName="Sum" IsReadOnly="True">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<Border BorderThickness="0">
<TextBlock x:Name="txtSummeCol" TextAlignment="Right" Text="{Binding Path=Sum,StringFormat=N}" HorizontalAlignment="Stretch" Padding="3" Margin="0,0,0,-1" VerticalAlignment="Stretch" ></TextBlock>
</Border>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
and here is the c# code
private void FillDataTable()
{
Performances.Clear();
foreach (var node in project)
{
var row = new TabularTimeRecordingModel
{
projectId = node.ID,
project = node.Name,
MondayLB = GetPerformanceBarsTotal(_FirstDate, node.ID),
MondayStd = GetPerformancesTotal(_FirstDate, node.ID),
TuesdayLB = GetPerformanceBarsTotal(_FirstDate.AddDays(1), node.ID),
TuesdayStd = GetPerformancesTotal(_FirstDate.AddDays(1), node.ID),
WednesdayLB = GetPerformanceBarsTotal(_FirstDate.AddDays(2), node.ID),
WednesdayStd = GetPerformancesTotal(_FirstDate.AddDays(2), node.ID),
ThursdayLB = GetPerformanceBarsTotal(_FirstDate.AddDays(3), node.ID),
ThursdayStd = GetPerformancesTotal(_FirstDate.AddDays(3), node.ID),
FridayLB = GetPerformanceBarsTotal(_FirstDate.AddDays(4), node.ID),
FridayStd = GetPerformancesTotal(_FirstDate.AddDays(4), node.ID),
SaturdayLB = GetPerformanceBarsTotal(_FirstDate.AddDays(5), node.ID),
SaturdayStd = GetPerformancesTotal(_FirstDate.AddDays(5), node.ID),
SundayLB = GetPerformanceBarsTotal(_FirstDate.AddDays(6), node.ID),
SundayStd = GetPerformancesTotal(_FirstDate.AddDays(6), node.ID),
Sum = GetProjectsTotal(node.ID)
};
Performances.Add(row);
}
grdTimeRecording.ItemsSource = Performances;
grdTimeRecording.DataContext = Performances;
}
private void GrdTimeRecording_OnCellEditEnded(object sender, GridViewCellEditEndedEventArgs e)
{
var text = GetTextBox((DependencyObject) e.EditingElement).Text;
var dayIndex = (e.Cell.Column.DisplayIndex - 1)/2;
var projectId = ((TabularTimeRecordingModel) (e.OldData)).projectId;
var hours = Convert.ToDouble(text);
UpdatePerformanceHoursByDate(_FirstDate.AddDays(dayIndex), projectId, hours);
e.Handled = true;
}
private void UpdatePerformanceHoursByDate(DateTime date, int projectId, double hours)
{
if (_datachaged)
{
if (TimeRecording[date] == null) RefreshTimeRecording(date);
var recordingDay = TimeRecording[date];
if (recordingDay == null) return;
foreach (var performace in recordingDay.Performances.Where(p => p.ProjectID == projectId))
{
performace.Duration = (int) hours*60;
}
recordingDay.Save();
_datachaged = false;
FillDataTable();
}
}
please suggest me the simple way to solve this issue, i can not use MVVM pattern to refresh the cell value i this case.