Buggy behaviour of SfDataGrid

I had correctly working SfDataGrid on version 18.4.0.30 but then I updated to 19.4.0.38, now the grid is showing random border lines on header column and there are some FrozenColumns too and there is straight vertical line after frozen column and when scroll left and right the column headers gets border.





  <syncfusion:SfDataGrid
                        AllowEditing="False"
                        AllowGrouping="False"
                        AllowSorting="False"
                        AutoGenerateColumns="False"
                        CurrentCellBorderThickness="0,0,0,0"
                        FrozenColumnCount="3"
                        HeaderRowHeight="45"
                        HideEmptyGridViewDefinition="True"
                        ShowGroupDropArea="False">
                        <syncfusion:SfDataGrid.Resources>
                            <Style TargetType="syncfusion:GridCell">
                                <Setter Property="BorderThickness" Value="0" />
                            </Style>
                            <Style TargetType="syncfusion:GridHeaderCellControl">
                                <Setter Property="BorderThickness" Value="0" />
                            </Style>
</syncfusion:SfDataGrid.Resources>


</syncfusion:SfDataGrid>

1 Reply

VS Vijayarasan Sivanandham Syncfusion Team January 17, 2022 12:22 PM UTC

Hi John,

You can resolve the reported problem by define the PART_FrozenCellBorder property of GridCell, GridHeaderCellControl, like below mentioned code snippet, 
<!--  Header Cell Style  --> 
<Style  TargetType="{x:Type syncfusion:GridHeaderCellControl}"> 
                        <Setter Property="Background" Value="Transparent" /> 
                        <Setter Property="BorderBrush" Value="Gray" /> 
                        <Setter Property="BorderThickness" Value="0" /> 
                        <Setter Property="HorizontalContentAlignment" Value="Center" /> 
                        <Setter Property="Padding" Value="5,3,5,3" /> 
                        <Setter Property="Foreground" Value="Gray" /> 
                        <Setter Property="FontSize" Value="14" /> 
                        <Setter Property="FontWeight" Value="Normal" /> 
                        <Setter Property="IsTabStop" Value="False" /> 
                        <Setter Property="syncfusion:VisualContainer.WantsMouseInput" Value="True" /> 
                        <Setter Property="VerticalContentAlignment" Value="Center" /> 
                        <Setter Property="Template"> 
                            <Setter.Value> 
                                <ControlTemplate TargetType="{x:Type syncfusion:GridHeaderCellControl}"> 
                                    <Grid> 
                                        <VisualStateManager.VisualStateGroups> 
                                            <VisualStateGroup x:Name="HiddenColumnsResizingStates"> 
                                                <VisualState x:Name="PreviousColumnHidden"> 
                                                    <Storyboard> 
                                                        <ThicknessAnimationUsingKeyFrames BeginTime="0" 
                                                                          Duration="1" 
                                                                          Storyboard.TargetName="PART_HeaderCellBorder" 
                                                                          Storyboard.TargetProperty="BorderThickness"> 
                                                            <EasingThicknessKeyFrame KeyTime="0" Value="3, 0, 1, 1" /> 
                                                        </ThicknessAnimationUsingKeyFrames> 
                                                    </Storyboard> 
                                                </VisualState> 
                                                <VisualState x:Name="HorizontalPreviousColumnHidden"> 
                                                    <Storyboard> 
                                                        <ThicknessAnimationUsingKeyFrames Storyboard.TargetName="PART_HeaderCellBorder" Storyboard.TargetProperty="BorderThickness"> 
                                                            <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,1" /> 
                                                        </ThicknessAnimationUsingKeyFrames> 
                                                    </Storyboard> 
                                                </VisualState> 
                                                <VisualState x:Name="VerticalPreviousColumnHidden"> 
                                                    <Storyboard> 
                                                        <ThicknessAnimationUsingKeyFrames Storyboard.TargetName="PART_HeaderCellBorder" Storyboard.TargetProperty="BorderThickness"> 
                                                            <EasingThicknessKeyFrame KeyTime="0" Value="3,0,1,0" /> 
                                                        </ThicknessAnimationUsingKeyFrames> 
                                                    </Storyboard> 
                                                </VisualState> 
                                                <VisualState x:Name="NonePreviousColumnHidden"> 
                                                    <Storyboard> 
                                                        <ThicknessAnimationUsingKeyFrames Storyboard.TargetName="PART_HeaderCellBorder" Storyboard.TargetProperty="BorderThickness"> 
                                                            <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,0" /> 
                                                        </ThicknessAnimationUsingKeyFrames> 
                                                    </Storyboard> 
                                                </VisualState> 
                                               <VisualState x:Name="HiddenState"> 
                                                    <Storyboard> 
                                                        <ThicknessAnimationUsingKeyFrames BeginTime="0" 
                                                                          Duration="1" 
                                                                          Storyboard.TargetName="PART_HeaderCellBorder" 
                                                                          Storyboard.TargetProperty="BorderThickness"> 
                                                            <EasingThicknessKeyFrame KeyTime="0" Value="3, 0, 3, 1" /> 
                                                        </ThicknessAnimationUsingKeyFrames> 
                                                    </Storyboard> 
                                                </VisualState> 
                                                <VisualState x:Name="HorizontalHiddenState"> 
                                                    <Storyboard> 
                                                        <ThicknessAnimationUsingKeyFrames Storyboard.TargetName="PART_HeaderCellBorder" Storyboard.TargetProperty="BorderThickness"> 
                                                            <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,1" /> 
                                                        </ThicknessAnimationUsingKeyFrames> 
                                                    </Storyboard> 
                                                </VisualState> 
                                                <VisualState x:Name="VerticalHiddenState"> 
                                                   <Storyboard> 
                                                        <ThicknessAnimationUsingKeyFrames Storyboard.TargetName="PART_HeaderCellBorder" Storyboard.TargetProperty="BorderThickness"> 
                                                            <EasingThicknessKeyFrame KeyTime="0" Value="3,0,3,0" /> 
                                                        </ThicknessAnimationUsingKeyFrames> 
                                                    </Storyboard> 
                                                </VisualState> 
                                                <VisualState x:Name="NoneHiddenState"> 
                                                    <Storyboard> 
                                                        <ThicknessAnimationUsingKeyFrames Storyboard.TargetName="PART_HeaderCellBorder" Storyboard.TargetProperty="BorderThickness"> 
                                                            <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,0" /> 
                                                        </ThicknessAnimationUsingKeyFrames> 
                                                    </Storyboard> 
                                                </VisualState> 
                                                <!--  VisualState name changed from Normal to NormalState as Normal state is used for providing MouseOver effect  --> 
                                                <VisualState x:Name="NormalState" /> 

                                                <VisualState x:Name="LastColumnHidden"> 
                                                    <Storyboard> 
                                                        <ThicknessAnimationUsingKeyFrames BeginTime="0" 
                                                                          Duration="1" 
                                                                          Storyboard.TargetName="PART_HeaderCellBorder" 
                                                                          Storyboard.TargetProperty="BorderThickness"> 
                                                            <EasingThicknessKeyFrame KeyTime="0" Value="0, 0, 3, 1" /> 
                                                        </ThicknessAnimationUsingKeyFrames> 
                                                    </Storyboard> 
                                                </VisualState> 
                                                <VisualState x:Name="HorizontalLastColumnHidden"> 
                                                    <Storyboard> 
                                                        <ThicknessAnimationUsingKeyFrames Storyboard.TargetName="PART_HeaderCellBorder" Storyboard.TargetProperty="BorderThickness"> 
                                                            <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,1" /> 
                                                        </ThicknessAnimationUsingKeyFrames> 
                                                    </Storyboard> 
                                                </VisualState> 
                                                <VisualState x:Name="VerticalLastColumnHidden"> 
                                                    <Storyboard> 
                                                        <ThicknessAnimationUsingKeyFrames Storyboard.TargetName="PART_HeaderCellBorder" Storyboard.TargetProperty="BorderThickness"> 
                                                            <EasingThicknessKeyFrame KeyTime="0" Value="0,0,3,0" /> 
                                                        </ThicknessAnimationUsingKeyFrames> 
                                                    </Storyboard> 
                                                </VisualState> 
                                                <VisualState x:Name="NoneLastColumnHidden"> 
                                                    <Storyboard> 
                                                        <ThicknessAnimationUsingKeyFrames Storyboard.TargetName="PART_HeaderCellBorder" Storyboard.TargetProperty="BorderThickness"> 
                                                            <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,0" /> 
                                                        </ThicknessAnimationUsingKeyFrames> 
                                                    </Storyboard> 
                                                </VisualState> 
                                            </VisualStateGroup> 
                                            <VisualStateGroup x:Name="CommonStates"> 
                                                <VisualState x:Name="MouseOver" /> 
                                                <VisualState x:Name="Normal" /> 
                                            </VisualStateGroup> 
                                            <VisualStateGroup x:Name="BorderStates"> 
                                                <VisualState x:Name="NormalCell" /> 
                                                <VisualState x:Name="FrozenColumnCell"> 
                                                    <Storyboard BeginTime="0"> 
                                                        <ThicknessAnimationUsingKeyFrames BeginTime="0" 
                                                                          Duration="1" 
                                                                          Storyboard.TargetName="PART_FrozenCellBorder" 
                                                                          Storyboard.TargetProperty="BorderThickness"> 
                                                            <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,0" /> 
                                                        </ThicknessAnimationUsingKeyFrames> 
                                                    </Storyboard> 
                                                </VisualState> 
                                                <VisualState x:Name="FooterColumnCell"> 
                                                    <Storyboard BeginTime="0"> 
                                                        <ThicknessAnimationUsingKeyFrames BeginTime="0" 
                                                                          Duration="1" 
                                                                          Storyboard.TargetName="PART_FooterCellBorder" 
                                                                          Storyboard.TargetProperty="BorderThickness"> 
                                                            <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,0" /> 
                                                        </ThicknessAnimationUsingKeyFrames> 
                                                    </Storyboard> 
                                                </VisualState> 
                                            </VisualStateGroup> 
                                        </VisualStateManager.VisualStateGroups> 
                                        <Border x:Name="PART_FrozenCellBorder" 
                                Background="Transparent" 
                                BorderBrush="{TemplateBinding BorderBrush}"/> 
                                        <Border x:Name="PART_FooterCellBorder" 
                                Background="Transparent" 
                                BorderBrush="{TemplateBinding BorderBrush}" /> 
                                        <Border x:Name="PART_HeaderCellBorder" 
                                Background="{TemplateBinding Background}" 
                                BorderBrush="{TemplateBinding BorderBrush}" 
                                BorderThickness="{TemplateBinding BorderThickness}" 
                                SnapsToDevicePixels="True"> 
                                            <Grid Margin="{TemplateBinding Padding}" SnapsToDevicePixels="True"> 
                                                <Grid.ColumnDefinitions> 
                                                    <ColumnDefinition Width="*" /> 
                                                    <ColumnDefinition Width="Auto" /> 
                                                    <ColumnDefinition Width="Auto" /> 
                                                </Grid.ColumnDefinitions> 

                                                <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                                  VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
                                                  Focusable="False" /> 

                                                <Border x:Name="PART_FilterPopUpPresenter" /> 

                                                <Grid x:Name="PART_SortButtonPresenter" 
                                      Grid.Column="1" 
                                      SnapsToDevicePixels="True"> 
                                                    <Grid.ColumnDefinitions> 
                                                        <ColumnDefinition Width="0" MinWidth="{Binding Path=SortDirection, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource sortDirectionToWidthConverter}}" /> 
                                                        <ColumnDefinition Width="*" /> 
                                                    </Grid.ColumnDefinitions> 

                                                    <Path Width="8.938" 
                                          Height="8.138" 
                                          HorizontalAlignment="Center" 
                                          VerticalAlignment="Center" 
                                          Data="F1M753.644,-13.0589L753.736,-12.9639 753.557,-12.7816 732.137,8.63641 732.137,29.7119 756.445,5.40851 764.094,-2.24384 764.275,-2.42352 771.834,5.1286 796.137,29.4372 796.137,8.36163 774.722,-13.0589 764.181,-23.5967 753.644,-13.0589z" 
                                          Fill="Gray" 
                                          SnapsToDevicePixels="True" 
                                          Stretch="Fill" 
                                          Visibility="{Binding Path=SortDirection, 
                                                               RelativeSource={RelativeSource TemplatedParent}, 
                                                               ConverterParameter=Ascending, 
                                                               Converter={StaticResource sortDirectionToVisibilityConverter}}"> 
                                                        <Path.RenderTransform> 
                                                            <TransformGroup> 
                                                                <TransformGroup.Children> 
                                                                    <RotateTransform Angle="0" /> 
                                                                    <ScaleTransform ScaleX="1" ScaleY="1" /> 
                                                                </TransformGroup.Children> 
                                                            </TransformGroup> 
                                                        </Path.RenderTransform> 
                                                    </Path> 

                                                    <Path Width="8.938" 
                                          Height="8.138" 
                                          HorizontalAlignment="Center" 
                                          VerticalAlignment="Center" 
                                          Data="F1M181.297,177.841L181.205,177.746 181.385,177.563 202.804,156.146 202.804,135.07 178.497,159.373 170.847,167.026 170.666,167.205 163.107,159.653 138.804,135.345 138.804,156.42 160.219,177.841 170.76,188.379 181.297,177.841z" 
                                          Fill="Gray" 
                                          SnapsToDevicePixels="True" 
                                          Stretch="Fill" 
                                          Visibility="{Binding Path=SortDirection, 
                                                               RelativeSource={RelativeSource TemplatedParent}, 
                                                               ConverterParameter=Decending, 
                                                               Converter={StaticResource sortDirectionToVisibilityConverter}}"> 
                                                        <Path.RenderTransform> 
                                                            <TransformGroup> 
                                                                <TransformGroup.Children> 
                                                                    <RotateTransform Angle="0" /> 
                                                                    <ScaleTransform ScaleX="1" ScaleY="1" /> 
                                                                </TransformGroup.Children> 
                                                            </TransformGroup> 
                                                        </Path.RenderTransform> 
                                                    </Path> 

                                                    <TextBlock Grid.Column="1" 
                                               Margin="0,-4,0,0" 
                                               VerticalAlignment="Center" 
                                               FontSize="10" 
                                               Foreground="{TemplateBinding Foreground}" 
                                               SnapsToDevicePixels="True" 
                                               Text="{TemplateBinding SortNumber}" 
                                               Visibility="{TemplateBinding SortNumberVisibility}" /> 
                                                </Grid> 

                                                <syncfusion:FilterToggleButton x:Name="PART_FilterToggleButton" 
                                                          Grid.Column="2" 
                                                          HorizontalAlignment="Stretch" 
                                                          VerticalAlignment="Stretch" 
                                                          SnapsToDevicePixels="True" 
                                                          Visibility="{TemplateBinding FilterIconVisiblity}" /> 
                                            </Grid> 
                                        </Border> 

                                    </Grid> 
                                </ControlTemplate> 
                            </Setter.Value> 
                        </Setter> 
</Style> 

<ControlTemplate x:Key="GridCellControlTemplate" TargetType="{x:Type syncfusion:GridCell}"> 
                       <Grid SnapsToDevicePixels="True"> 
                            <VisualStateManager.VisualStateGroups> 
                                <VisualStateGroup x:Name="IndicationStates"> 
                                    <VisualState x:Name="NoError"> 
                                        <Storyboard BeginTime="0"> 
                                            <!--<DoubleAnimationUsingKeyFrames Storyboard.TargetName="PART_InValidCellBorder" Storyboard.TargetProperty="Width"> 
                                            <EasingDoubleKeyFrame KeyTime="0" Value="1" /> 
                                            <EasingDoubleKeyFrame KeyTime="0" Value="0" /> 
                                        </DoubleAnimationUsingKeyFrames>--> 
                                            <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" 
                                                                       Storyboard.TargetName="PART_InValidCellBorder" 
                                                                       Storyboard.TargetProperty="(UIElement.Visibility)"> 
                                                <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Visibility.Collapsed}" /> 
                                            </ObjectAnimationUsingKeyFrames> 
                                        </Storyboard> 
                                    </VisualState> 
                                    <VisualState x:Name="HasError"> 
                                        <Storyboard> 
                                            <!--<DoubleAnimationUsingKeyFrames Storyboard.TargetName="PART_InValidCellBorder" Storyboard.TargetProperty="Width"> 
                                            <EasingDoubleKeyFrame KeyTime="0" Value="0" /> 
                                            <EasingDoubleKeyFrame KeyTime="0" Value="10" /> 
                                        </DoubleAnimationUsingKeyFrames>--> 
                                            <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" 
                                                                       Storyboard.TargetName="PART_InValidCellBorder" 
                                                                       Storyboard.TargetProperty="(UIElement.Visibility)"> 
                                                <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Visibility.Visible}" /> 
                                            </ObjectAnimationUsingKeyFrames> 
                                        </Storyboard> 
                                    </VisualState> 
 
                                </VisualStateGroup> 
                                <VisualStateGroup x:Name="BorderStates"> 
                                    <VisualState x:Name="NormalCell" /> 
                                    <VisualState x:Name="FrozenColumnCell"> 
                                        <Storyboard BeginTime="0"> 
                                            <ThicknessAnimationUsingKeyFrames BeginTime="0" 
                                                                          Duration="1" 
                                                                          Storyboard.TargetName="PART_FrozenCellBorder" 
                                                                          Storyboard.TargetProperty="BorderThickness"> 
                                                <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,0" /> 
                                            </ThicknessAnimationUsingKeyFrames> 
                                        </Storyboard> 
                                    </VisualState> 
                                    <VisualState x:Name="FooterColumnCell"> 
                                        <Storyboard BeginTime="0"> 
                                            <ThicknessAnimationUsingKeyFrames BeginTime="0" 
                                                                          Duration="1" 
                                                                          Storyboard.TargetName="PART_FooterCellBorder" 
                                                                          Storyboard.TargetProperty="BorderThickness"> 
                                                <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,0" /> 
                                            </ThicknessAnimationUsingKeyFrames> 
                                        </Storyboard> 
                                    </VisualState> 
                                </VisualStateGroup> 
                            </VisualStateManager.VisualStateGroups> 
                            <Border Background="{TemplateBinding CellSelectionBrush}" 
                                SnapsToDevicePixels="True" 
                                Visibility="{TemplateBinding SelectionBorderVisibility}" /> 
                            <Border x:Name="PART_FooterCellBorder" 
                                Background="Transparent" 
                                BorderBrush="{TemplateBinding BorderBrush}"/> 
                            <Border x:Name="PART_FrozenCellBorder" 
                                Background="Transparent" 
                                BorderBrush="{TemplateBinding BorderBrush}"/> 
                            <Border x:Name="PART_GridCellBorder" 
                                Background="{TemplateBinding Background}" 
                                BorderBrush="{TemplateBinding BorderBrush}" 
                                BorderThickness="{TemplateBinding BorderThickness}" 
                                SnapsToDevicePixels="True"> 
                                <ContentPresenter Margin="{TemplateBinding Padding}" Opacity="{TemplateBinding AnimationOpacity}" /> 
                            </Border> 
 
                            <Border Margin="0,0,1,1" 
                                Background="Transparent" 
                                BorderBrush="{TemplateBinding CurrentCellBorderBrush}" 
                                BorderThickness="{TemplateBinding CurrentCellBorderThickness}" 
                                IsHitTestVisible="False" 
                                SnapsToDevicePixels="True" 
                                Visibility="{TemplateBinding CurrentCellBorderVisibility}" /> 
                            <Border x:Name="PART_InValidCellBorder" 
                                Width="10" 
                                Height="10" 
                                HorizontalAlignment="Right" 
                                VerticalAlignment="Top" 
                               SnapsToDevicePixels="True" 
                                Visibility="Collapsed"> 
                                <ToolTipService.ToolTip> 
                                    <ToolTip Background="#FFDB000C" 
                                         Placement="Right" 
                                         PlacementRectangle="20,0,0,0" 
                                         Tag="{TemplateBinding ErrorMessage}" 
                                         Template="{StaticResource ValidationToolTipTemplate}" /> 
                                </ToolTipService.ToolTip> 
                                <Path Data="M0.5,0.5 L12.652698,0.5 12.652698,12.068006 z" 
                                  Fill="Red" 
                                  SnapsToDevicePixels="True" 
                                  Stretch="Fill" /> 
                            </Border> 
                        </Grid> 
</ControlTemplate> 
 
<ControlTemplate x:Key="LightweightGridCellControlTemplate" TargetType="{x:Type syncfusion:GridCell}"> 
                        <Border Background="Transparent"> 
                            <ContentPresenter Margin="{TemplateBinding Padding}"/> 
                        </Border> 
</ControlTemplate> 
 
<!--  Grid Cell Style  --> 
<Style TargetType="{x:Type syncfusion:GridCell}"> 
                        <Setter Property="Background" Value="Transparent" /> 
                        <Setter Property="BorderBrush" Value="Gray" /> 
                        <Setter Property="BorderThickness" Value="0" /> 
                        <Setter Property="Padding" Value="0,0,0,0" /> 
                        <Setter Property="FocusVisualStyle" Value="{x:Null}" /> 
                        <Setter Property="IsTabStop" Value="False" /> 
                        <Setter Property="VerticalContentAlignment" Value="Center"/> 
                        <Style.Triggers> 
                            <Trigger Property="UseDrawing" Value="True"> 
                                <Setter Property="BorderThickness" Value="1"/> 
                                <Setter Property='Padding' Value="1,1,2,2"/> 
                                <Setter Property="Template" Value="{StaticResource LightweightGridCellControlTemplate}"/> 
                            </Trigger> 
                            <Trigger Property="UseDrawing" Value="False"> 
                                <Setter Property="Template" Value="{StaticResource GridCellControlTemplate}"/> 
                            </Trigger> 
                        </Style.Triggers> 
</Style>     

Sample Link: https://www.syncfusion.com/downloads/support/forum/171969/ze/SfDataGridDemo1354972479

Please let us know if you have any concerns in this. 

Regards, 
Vijayarasan S 


Loader.
Up arrow icon