GridViewDataColumn ; SearchBox error in Distinct values

0 Answers 81 Views
GridView
Dilip
Top achievements
Rank 1
Dilip asked on 23 May 2024, 05:56 AM | edited on 27 May 2024, 06:29 AM

I have customized filtering control along with behavior,

Im trying to use SearchBox control in distinct values filter ive tried "EnableDistinctValuesFiltering="True""
even though i have search box it doest work,

example: in this screenshot ive type pending but the list still remains the same

 

 

here is my style

 

<Style TargetType="telerik:FilteringControl">
 <Setter Property="Background" Value="White" />
 <Setter Property="Template">
 <Setter.Value>
 <ControlTemplate TargetType="telerik:FilteringControl">
  <Border
   Margin="{TemplateBinding Margin}"
   Background="White"
   BorderBrush="{TemplateBinding BorderBrush}"
   BorderThickness="{TemplateBinding BorderThickness}"
   CornerRadius="1"
   TextBlock.FontSize="11"
   TextBlock.FontWeight="Normal">
  <Border
   Margin="1"
   Background="{TemplateBinding Background}"
   BorderBrush="LightGray"
   BorderThickness="1">
  <StackPanel
   MinWidth="200"
   MaxWidth="350"
   Margin="5"
   HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
   VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
  <StackPanel x:Name="PART_DistinctFilter">
<Grid>
<telerik:RadButton
 x:Name="PART_FilterCloseButton"
 Width="15"
 Height="15"
 Margin="0,2"
 Padding="1,-2,0,0"
 HorizontalAlignment="Right"
 Content="x"
 FontSize="10"
 FontWeight="Bold" />
</Grid>
<telerik:RadWatermarkTextBox
 x:Name="PART_SearchBox"
 Margin="0,0,0,4"
 CurrentText="{Binding SearchText, Mode=TwoWay, TargetNullValue=''}"
 WatermarkContent="{telerik:LocalizableResource Key=GridViewFilterDistinctValueSearch}">
<telerik:RadWatermarkTextBox.Style>
 <Style BasedOn="{StaticResource {x:Type telerik:RadWatermarkTextBox}}" TargetType="{x:Type telerik:RadWatermarkTextBox}">
 <Setter Property="Visibility" Value="Collapsed" />
 <Style.Triggers>
 <DataTrigger Binding="{Binding DataContext.FilterType, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, FallbackValue=Collapsed}" Value="CustomLOV">
 <Setter Property="Visibility" Value="Visible" />
 </DataTrigger>
 </Style.Triggers>
 </Style>
</telerik:RadWatermarkTextBox.Style>
</telerik:RadWatermarkTextBox>
<ListBox
 x:Name="PART_DistinctValuesList"
 MaxHeight="250"
 ItemsSource="{Binding DistinctValues}"
 ScrollViewer.HorizontalScrollBarVisibility="Auto"
 SelectionMode="Multiple">
<ListBox.ItemTemplate>
<DataTemplate>
    <CheckBox
        VerticalContentAlignment="Center"
        Content="{Binding ConvertedValue}"
        IsChecked="{Binding IsActive, Mode=TwoWay}">
        <CheckBox.LayoutTransform>
            <ScaleTransform ScaleX="0.9" ScaleY="0.9" />
        </CheckBox.LayoutTransform>
    </CheckBox>
</DataTemplate>
</ListBox.ItemTemplate>
    <ListBox.Style>
        <Style BasedOn="{StaticResource {x:Type ListBox}}" TargetType="{x:Type ListBox}">
            <Setter Property="Visibility" Value="Collapsed" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding DataContext.FilterType, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, FallbackValue=Collapsed}" Value="CustomLOV">
                    <Setter Property="Visibility" Value="Visible" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ListBox.Style>
</ListBox>
</StackPanel>
<StackPanel Margin="0,2">
<TextBlock
    Margin="0,2,0,0"
    telerik:LocalizationManager.ResourceKey="GridViewFilterShowRowsWithValueThat"
    Foreground="Black">
    <TextBlock.Style>
        <Style BasedOn="{StaticResource {x:Type TextBlock}}" TargetType="{x:Type TextBlock}">
            <Setter Property="Visibility" Value="Visible" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding DataContext.FilterType, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, FallbackValue=Collapsed}" Value="CustomLOV">
                    <Setter Property="Visibility" Value="Collapsed" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>
<telerik:RadComboBox
    x:Name="PART_Filter1ComboBox"
    Margin="0,2"
    ItemTemplate="{StaticResource ActionTemplate}"
    ItemsSource="{Binding AvailableActions}"
    SelectedItem="{Binding Filter1.Operator, Mode=TwoWay}">
    <telerik:RadComboBox.Style>
        <Style BasedOn="{StaticResource {x:Type telerik:RadComboBox}}" TargetType="{x:Type telerik:RadComboBox}">
            <Setter Property="Visibility" Value="Visible" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding DataContext.FilterType, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, FallbackValue=Collapsed}" Value="Condition">
                    <Setter Property="Visibility" Value="Collapsed" />
                </DataTrigger>
                <DataTrigger Binding="{Binding DataContext.FilterType, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, FallbackValue=Collapsed}" Value="CustomLOV">
                    <Setter Property="Visibility" Value="Collapsed" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </telerik:RadComboBox.Style>
</telerik:RadComboBox>
<TextBox
    x:Name="PART_Filter1TextBox"
    Height="30"
    Margin="0,2"
    Padding="3,0"
    VerticalContentAlignment="Center"
    Text="{Binding Filter1.Value, Mode=TwoWay, Converter={StaticResource CommonValueConverter}, ConverterParameter=FilteringControl}">
<TextBox.Style>
<Style BasedOn="{StaticResource {x:Type TextBox}}" TargetType="TextBox">
    <Setter Property="IsEnabled" Value="True" />
    <Setter Property="Visibility" Value="Visible" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding ElementName=PART_Filter1ComboBox, Path=SelectedItem}" Value="IsNull">
            <Setter Property="IsEnabled" Value="False" />
        </DataTrigger>
        <DataTrigger Binding="{Binding DataContext.FilterType, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, FallbackValue=Collapsed}" Value="Condition">
            <Setter Property="Visibility" Value="Collapsed" />
        </DataTrigger>
        <DataTrigger Binding="{Binding DataContext.FilterType, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, FallbackValue=Collapsed}" Value="CustomLOV">
            <Setter Property="Visibility" Value="Collapsed" />
        </DataTrigger>
    </Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
<telerik:RadComboBox
    x:Name="CustomComboBox"
    Height="5"
    Margin="0,2"
    ItemsSource="{Binding DataContext.CustomFilterValues, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
    SelectedValue="{Binding Filter1.Value}"
    Text="{Binding Filter1.Value, UpdateSourceTrigger=PropertyChanged}">
<telerik:RadComboBox.Style>
<Style BasedOn="{StaticResource {x:Type telerik:RadComboBox}}" TargetType="{x:Type telerik:RadComboBox}">
    <Setter Property="Visibility" Value="Collapsed" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding DataContext.FilterType, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, FallbackValue=Collapsed}" Value="Condition">
            <Setter Property="Visibility" Value="Visible" />
        </DataTrigger>
    </Style.Triggers>
</Style>
</telerik:RadComboBox.Style>
</telerik:RadComboBox>
<!--</StackPanel>-->
</StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button
  x:Name="PART_ApplyFilterButton"
  Grid.Column="0"
  Margin="0,2,2,2"
  telerik:LocalizationManager.ResourceKey="GridViewFilter" />
<Button
  x:Name="PART_ClearFilterButton"
  Grid.Column="1"
  Margin="2,2,0,2"
  telerik:LocalizationManager.ResourceKey="GridViewClearFilter" />
</Grid>
</StackPanel>
</Border>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

Dimitar
Telerik team
commented on 27 May 2024, 06:32 AM

Hi Dilip, 

The style is missing some of the templates and I cannot build a runnable project with it. I have attached my test project. Could you update it so it reproduces the issue? This will allow me to properly investigate this. 

In addition, can you specify the version that you are currently using? Please note that we have upgraded the template which can cause issues in some cases:  Filters Work Only the First Time in RadGridView - Telerik UI for WPF

Thank you in advance for your patience and cooperation. 

 

Dilip
Top achievements
Rank 1
commented on 27 May 2024, 07:55 AM | edited

Hello Dimitar, Thanks, It works after I've changed the List Box itemsSource DistinctValues to FilteredDistinctValues but I've got another problem

in the list ive got 2 items


ive  searched and chose pending

 

and again ive searched and chose readytobefinalized


if i click on filter then i can able to get only the last selected one (i.e ready to be finalized)

Result:



also, in search box I have clear command, but this is not working inside filtering control

<telerik:RadWatermarkTextBox
           x:Name="PART_SearchBox"
           Margin="0,0,0,4"
           CurrentText="{Binding SearchText, Mode=TwoWay, TargetNullValue=''}"
           WatermarkContent="{telerik:LocalizableResource Key=GridViewFilterDistinctValueSearch}">
 <telerik:RadWatermarkTextBox.AdditionalContent>
            <telerik:RadButton
             Command="telerik:RadWatermarkTextBoxCommands.Clear"
             CommandTarget="{Binding RelativeSource={RelativeSource AncestorType=telerik:RadWatermarkTextBox}}"
             Content="X" />
  </telerik:RadWatermarkTextBox.AdditionalContent>

</telerik:RadWatermarkTextBox>



Kindly assist on this.

Dimitar
Telerik team
commented on 28 May 2024, 05:11 AM

Hi Dilip, 

I want to kindly ask you to update the project from my previous post so it reproduces the described case. This way I can test and debug this and investigate why this is not working as expected. Without a runnable project, I can only guess why this not working since this is a specific custom implementation.

Thank you in advance for your patience and cooperation. I am looking forward to your reply.  

No answers yet. Maybe you can help?

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