Skip to content

macgile/FilterDataGrid-Beta

Repository files navigation

WPF Filterable DataGrid, multi language

The new filtering method is completely different from the current version or the one commonly used to filter data (as far as I know).
Its operation is the closest to that of Excel.

datagrid image demo

How to use

  • Add Namespace into your xaml :
    <Window xmlns:control="http://filterdatagrid.control.com/2021" ..
  • Control
  <control:FilterDataGrid 
   FilterLanguage="English" DateFormatString="d" ShowStatusBar="True" ShowElapsedTime="False"
   ExcludeFields="lastname,age,manager" ...
  • Properties

    • ShowStatusBar : displays the status bar, default : false
    • ShowElapsedTime : displays the elapsed time of filtering in status bar, default : false
    • ShowRowsCount : display the number of rows, default : false
    • FilterLanguage : translation into available language, default : English
    • ExcludeFields : comma separated fields to exclude from filter, only works in AutoGenerateColumns mode
    • DateFormatString : date display format, default : "d"

    ⚠️ Before version 1.2.5.2, you must set the "Time" part of the DateTime fields to zero, otherwise the filter doesn't work.
    see the documentation "Standard date and time format strings"

  • Custom TextColumn

    If you add custom columns, you must set AutoGenerateColumns="False"

    <control:FilterDataGrid.Columns>   
        <control:DataGridTextColumn IsColumnFiltered="True" ...
  • Custom TemplateColumn

    ⚠️ FieldName property of DataGridTemplateColumn is required

    <control:FilterDataGrid.Columns>   
        <control:DataGridTemplateColumn IsColumnFiltered="True"
                                 FieldName="LastName" ...

Global Style

You can define a global style which overrides the default style of "FilterDataGrid"

<Style
            x:Key="FilterDatagridStyle"
            BasedOn="{StaticResource {ComponentResourceKey TypeInTargetAssembly=control:FilterDataGrid,
                                                           ResourceId=FilterDataGridStyle}}"
            TargetType="{x:Type control:FilterDataGrid}">
            <Setter Property="Margin" Value="10" />
            <Setter Property="RowHeaderWidth" Value="40" />
     ...
</Style>

Benchmark

Intel Core i7, 2.93 GHz, 16 GB, Windows 10, 64 bits.
Tested on the "Last name" column of the demo application using a random distinct name generator, between 5 and 8 letters in length.
The elapsed time decreases based on the number of columns and filtered items.

Number of rows Opening of the PopUp Applying the filter Total (PopUp + Filter)
10 000 < 1 second < 1 second < 1 second
100 000 < 1 second < 1 second < 1 second
500 000 ± 2.5 second < 1 second ± 2.6 second
1 000 000 ± 4.5 second < 1 second ± 4.8 second

Demonstration

datagrid image demo

Contributors

About

WPF Filterable Datagrid, multi language

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages