Help Troubleshooting Grid Freezing up

2 posts, 0 answers
  1. Randy
    Randy avatar
    50 posts
    Member since:
    Aug 2010

    Posted 23 Feb 2012 Link to this post

    I have an application that is deployed to about a thousand users.  About 5 times a day we get calls from various users saying that they cannot commit changes to a new row that was added to the main sales entry grid.  We have only been able to have the same thing happen in our testing a handful of times.  Each time it happens, we are not able to figure out the steps to reproduce the problem.  There are no exceptions created so I am having a heck of a time tracking it down.

    The grid uses row details heavily.  In fact, the columns of the grid are read only and all changes to the data are happening in the row details section where there are two way bindings to the columns.  The user clicks the Add New Record to make a new entry.  We have been telling them to click on the Row Indicator to commit the row after filling in the required fields.  I am using a data template selector to select a template for the Row Details.  I am using RowValidating to validate the data.

    Any help would be appreciated in trying to track this down.  Occasionally I see a submit failed due to an edit in progress, but I a assume that is happening because the user is clicking a save button but the Row that they just added is still stuck in insert/edit mode.  Most of the time after clicking around on the screen for a few minutes, the problem corrects itself.

    Here is part of the grid:
                    <telerik:RadGridView Grid.Row="1" Name="_rgvEntryData" ShowGroupPanel="False" AutoGenerateColumns="False" ShowInsertRow="True" ShowColumnFooters="True" RowDetailsVisibilityChanged="_rgvEntryData_RowDetailsVisibilityChanged"
     Margin="{StaticResource InnerMargin}" AddingNewDataItem="_rgvEntryData_AddingNewDataItem" CanUserFreezeColumns="False" RowValidating="_rgvEntryData_RowValidating" BeginningEdit="_rgvEntryData_BeginningEdit"
    AlternationCount="2" Filtered="_rgvEntryData_Filtered" RowIndicatorVisibility="Visible"  SelectionChanged="_rgvEntryData_SelectionChanged" RowDetailsVisibilityMode="VisibleWhenSelected"
    CurrentCellChanged="_rgvEntryData_CurrentCellChanged" Deleting="_rgvEntryData_Deleting" CanUserReorderColumns="False" RowEditEnded="_rgvEntryData_RowEditEnded" CellLoaded="_rgvEntryData_CellLoaded" >

    And here is one of the RowDetails templates:
    <DataTemplate x:Key="AutoFireEntry">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="25"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
     
            <TextBlock Grid.Row="0" Grid.Column="0" Text="Customer Name: " Margin="5,9,5,5"/>
            <rsch:TextBoxChangeExt Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="3" Text="{Binding CustomerName, Mode=TwoWay}" Margin="5,5,5,5" Tag="CustomerName"/>
            <TextBlock Grid.Row="0" Grid.Column="4" Text="Written Date: " Margin="5,9,5,5"/>
            <telerik:RadDatePicker Grid.Row="0" Grid.Column="5" SelectedValue="{Binding WrittenDate, Mode=TwoWay}" Margin="5,5,5,5" HorizontalAlignment="Left" Tag="WrittenDate"
                                               CalendarStyle="{StaticResource calendarStyle}" LostFocus="_rdpWrittenDate_LostFocus" SelectionChanged="_writtenDate_SelectionChanged"/>
            <TextBlock Grid.Row="0" Grid.Column="6" Text="Issued Date: " Margin="5,9,5,5"/>
            <telerik:RadDatePicker Grid.Row="0" Grid.Column="7" SelectedValue="{Binding IssueDate, Mode=TwoWay}" Margin="5,5,5,5" HorizontalAlignment="Left" Tag="IssueDate"
                                               CalendarStyle="{StaticResource calendarStyle}" LostFocus="_rdpIssuedDate_LostFocus" MinWidth="80"/>
            <TextBlock Grid.Row="0" Grid.Column="8" Text="{Binding Converter={StaticResource BrandConverter}, ConverterParameter=Premium}" Margin="5,9,5,5"/>
            <telerik:RadMaskedTextBox Grid.Row="0" Grid.Column="9" Value="{Binding TermPremium, Mode=TwoWay}" Margin="5,5,5,5" MaskType="Numeric" Mask="c" MinWidth="80"
                                      HorizontalContentAlignment="Right" SelectionOnFocus="SelectAll" Tag="TermPremium"/>
     
            <TextBlock Grid.Row="1" Grid.Column="0" Text="Sold By: " Margin="5,9,5,5"/>
            <telerik:RadComboBox Grid.Row="1" Grid.Column="1" SelectedValue="{Binding SoldByUserID, Mode=TwoWay}" ItemTemplate="{StaticResource EmployeeItemTemplate}" SelectedValuePath="UserID" Tag="SoldByName"
                                             ItemsSource="{StaticResource Employees}" Margin="5,5,5,5" IsEditable="False" MinWidth="50" MaxWidth="120" />
            <TextBlock Grid.Row="1" Grid.Column="2" Text="Policy Type: " Margin="5,9,5,5"/>
            <telerik:RadComboBox Grid.Row="1" Grid.Column="3" SelectedValue="{Binding PolicyTypeID, Mode=TwoWay}" ItemTemplate="{StaticResource SetupItemTemplate}" SelectedValuePath="SetupID" Tag="PolicyType"
                                             ItemsSource="{StaticResource PolicyTypes}" Margin="5,5,5,5" IsEditable="False" MinWidth="50" MaxWidth="120" EmptySelectionBoxTemplate="{StaticResource EmptyTemplate}" />
            <TextBlock Grid.Row="1" Grid.Column="4" Text="Business Type: " Margin="5,9,5,5"/>
            <telerik:RadComboBox Grid.Row="1" Grid.Column="5" SelectedValue="{Binding BusinessTypeID, Mode=TwoWay}" ItemTemplate="{StaticResource SetupItemTemplate}" SelectedValuePath="SetupID" Tag="BusinessType"
                                             ItemsSource="{StaticResource BusinessTypes}" Margin="5,5,5,5" IsEditable="False" MinWidth="50" MaxWidth="120" EmptySelectionBoxTemplate="{StaticResource EmptyTemplate}" />
            <TextBlock Grid.Row="1" Grid.Column="6" Text="Source Type: " Margin="5,9,5,5"/>
            <telerik:RadComboBox Grid.Row="1" Grid.Column="7" SelectedValue="{Binding SourceTypeID, Mode=TwoWay}" ItemTemplate="{StaticResource SetupItemTemplate}" SelectedValuePath="SetupID" MinWidth="50" MaxWidth="120" Tag="SourceType"
                                             ItemsSource="{StaticResource SourceTypes}" Margin="5,5,5,5" IsEditable="False" EmptySelectionBoxTemplate="{StaticResource EmptyTemplate}" />
            <TextBlock Grid.Row="1" Grid.Column="8" Text="Det. Source Type: " Padding="5,9,5,5" />
            <telerik:RadComboBox Grid.Row="1" Grid.Column="9" SelectedValue="{Binding DetailedSourceTypeID, Mode=TwoWay}" ItemTemplate="{StaticResource SetupItemTemplate}" SelectedValuePath="SetupID" MinWidth="50" MaxWidth="120" Tag="DetSourceType"
                                             ItemsSource="{StaticResource DetSourceTypes}" Margin="5,5,5,5" IsEditable="False" ClearSelectionButtonVisibility="Visible" ClearSelectionButtonContent="Clear Selection"/>
     
            <TextBlock Grid.Row="2" Grid.Column="0" Text="Prior Insurance: " Margin="5,9,5,5"/>
            <telerik:RadComboBox Grid.Row="2" Grid.Column="1" SelectedValue="{Binding PriorInsuranceCoID, Mode=TwoWay}" ItemTemplate="{StaticResource SetupItemTemplate}" SelectedValuePath="SetupID" MinWidth="50" MaxWidth="120"
                                             ItemsSource="{StaticResource PriorInsurance}" Margin="5,5,5,5" IsEditable="False" ClearSelectionButtonVisibility="Visible" ClearSelectionButtonContent="Clear Selection"/>
            <TextBlock Grid.Row="2" Grid.Column="2" Text="Term Type: " Margin="5,9,5,5"/>
            <telerik:RadComboBox Grid.Row="2" Grid.Column="3" SelectedValue="{Binding TermType, Mode=TwoWay}" DisplayMemberPath="Text" SelectedValuePath="Value"
                                             ItemsSource="{StaticResource TermTypes}" Margin="5,5,5,5" IsEditable="False" MinWidth="50" MaxWidth="120" />
            <TextBlock Grid.Row="2" Grid.Column="4" Text="Payment Mode: " Margin="5,9,5,5"/>
            <telerik:RadComboBox Grid.Row="2" Grid.Column="5" SelectedValue="{Binding PaymentMode, Mode=TwoWay}" DisplayMemberPath="Text" SelectedValuePath="Value"
                                             ItemsSource="{StaticResource PaymentMethods}" Margin="5,5,5,5" IsEditable="False" MinWidth="50" MaxWidth="120"
                                             ClearSelectionButtonVisibility="Visible" ClearSelectionButtonContent="Clear Selection"/>
            <TextBlock Grid.Row="2" Grid.Column="6" Text="Allocation: " Margin="5,9,5,5"/>
            <telerik:RadNumericUpDown Grid.Row="2" Grid.Column="7"  Margin="5,5,5,5" Minimum="5" Maximum="100"
                                                  Value="{Binding Allocation, Mode=TwoWay}" LargeChange="10" SmallChange="1" NumberDecimalDigits="0" CustomUnit="%" />
            <TextBlock Grid.Row="2" Grid.Column="8" Text="Follow Up Type: " Margin="5,9,5,5"/>
            <telerik:RadComboBox Grid.Row="2" Grid.Column="9" SelectedValue="{Binding FollowUpTypeID, Mode=TwoWay}" ItemTemplate="{StaticResource SetupItemTemplate}" SelectedValuePath="SetupID" MinWidth="50" MaxWidth="120" Tag="FUType"
                                             ItemsSource="{StaticResource FollowUpTypes}" Margin="5,5,5,5" IsEditable="False" ClearSelectionButtonVisibility="Visible" ClearSelectionButtonContent="Clear Selection"/>
            <CheckBox Grid.Row="2" Grid.Column="10" IsChecked="{Binding IsFollowUpComplete, Mode=TwoWay}" Margin="5,8,5,5" HorizontalAlignment="Left"/>
     
            <TextBlock Grid.Row="3" Grid.Column="0" Text="Charge Back: " Margin="5,9,5,5"/>
            <telerik:RadDatePicker Grid.Row="3" Grid.Column="1" SelectedValue="{Binding ChargeBackDate, Mode=TwoWay}" Margin="5,5,5,5" HorizontalAlignment="Left" Tag="ChargeBack"
                                               CalendarStyle="{StaticResource calendarStyle}" LostFocus="_rdpChargeBackDate_LostFocus" MinWidth="80"/>
            <TextBlock Grid.Row="3" Grid.Column="2" Text="Premium: " Margin="5,9,5,5" Visibility="{Binding Converter={StaticResource BrandVisibilityConverter}, ConverterParameter=5}"/>
            <telerik:RadMaskedTextBox Grid.Row="3" Grid.Column="3" Value="{Binding BrokerageFee, Mode=TwoWay}" Margin="5,5,5,5" MaskType="Numeric" Mask="c" MinWidth="80" HorizontalContentAlignment="Right" SelectionOnFocus="SelectAll"
                                      Visibility="{Binding Converter={StaticResource BrandVisibilityConverter}, ConverterParameter=5}"/>
            <TextBlock Grid.Row="3" Grid.Column="4" Text="Notes:" Margin="5,9,5,5" />
            <rsch:TextBoxChangeExt Grid.Row="3" Grid.Column="5" Grid.ColumnSpan="5" Text="{Binding Notes, Mode=TwoWay}" Margin="5,5,5,5" Tag="randy"/>
        </Grid>
    </DataTemplate>

    TextBoxChangeExt is just regular Textbox that has an event handler to update the source each time it changes.  The problem was happening before it was changed from a regular textbox.

    -Randy
  2. Yordanka
    Admin
    Yordanka avatar
    634 posts

    Posted 27 Feb 2012 Link to this post

    Hi Randy,

    I've tried to reproduce the problem you report but to no avail. I am attaching my test application which follows the code snippets provided by you. Can you check it and let me know if you are able to replicate the problem? 

    The only case that could be close to your problem is that the value entered in the last textbox is not saved when Enter is pressed. This is because the textbox's text is saved on lost focus. This case could be handled with a custom attached behavior as follow:

    <TextBox Text="{Binding Number, Mode=TwoWay}" Width="200" HorizontalAlignment="Left"
                                     telerik:TextBoxBehavior.UpdateTextOnEnter="True"/>

    Can you confirm that this is the problem you report?
     
    All the best,
    Yordanka
    the Telerik team
    Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
Back to Top