Ajout d'une fonctionnalité de filtrage basique

This commit is contained in:
Valentin Verdier 2020-12-01 21:57:15 +01:00
parent fb57383ec2
commit 60d94c407a
2 changed files with 58 additions and 6 deletions

View File

@ -11,11 +11,12 @@
Title="Hermes" Height="512" Width="1024">
<Window.Resources>
<BooleanToVisibilityConverter x:Key="Bool2VisibilityConv"/>
<CollectionViewSource x:Key="citoyenCollectionViewSource"/>
</Window.Resources>
<Grid Background="WhiteSmoke">
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="100"/>
<RowDefinition Height="90"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Menu Grid.Row="0" Background="White">
@ -59,19 +60,44 @@
</MenuItem>
</Menu>
<WrapPanel Grid.Row="1" Margin="10">
<StackPanel Margin="5">
<StackPanel Margin="5,5,0,0">
<Label>Age :</Label>
<WrapPanel>
<ComboBox Name="ageOperationFilter" Width="150" Margin="0,0,5,0">
<ComboBox Name="ageOperationFilterComboBox" Width="150" Margin="0,0,5,0">
<ComboBoxItem IsSelected="True">Égal à</ComboBoxItem>
<ComboBoxItem>Supérieur à</ComboBoxItem>
<ComboBoxItem>Inférieur à</ComboBoxItem>
</ComboBox>
<TextBox VerticalContentAlignment="Center" HorizontalAlignment="Left" Height="23" Width="40"/>
<TextBox Name="ageFilterTextBox" VerticalContentAlignment="Center" HorizontalAlignment="Left" Height="23" Width="40"/>
</WrapPanel>
</StackPanel>
<StackPanel Margin="10,5,0,0">
<Label>Profession :</Label>
<TextBox Name="professionFilterTextBox" VerticalContentAlignment="Center" HorizontalAlignment="Left" Height="23" Width="150"/>
</StackPanel>
<StackPanel Margin="10,5,0,0">
<Label>Adresse :</Label>
<TextBox Name="adresseFilterTextBox" VerticalContentAlignment="Center" HorizontalAlignment="Left" Height="23" Width="150"/>
</StackPanel>
<StackPanel Margin="10,5,0,0">
<Label>Quartier :</Label>
<TextBox Name="quartierFilterTextBox" VerticalContentAlignment="Center" HorizontalAlignment="Left" Height="23" Width="150"/>
</StackPanel>
<StackPanel Margin="10,5,0,0">
<Label>Résidence :</Label>
<WrapPanel>
<ComboBox Name="residenceFilterComboBox" Width="150" Margin="0,0,5,0">
<ComboBoxItem>Principale</ComboBoxItem>
<ComboBoxItem>Secondaire</ComboBoxItem>
</ComboBox>
</WrapPanel>
</StackPanel>
<StackPanel Margin="10,5,0,0">
<Button Margin="0,0,0,10" Height="25" Width="100" IsDefault="True" Click="Rechercher_Click">Rechercher</Button>
<Button Margin="0,0,0,5" Height="25" Width="100" Click="Reinitialiser_Click">Réinitialiser</Button>
</StackPanel>
</WrapPanel>
<DataGrid Background="White" Grid.Row="2" VerticalScrollBarVisibility="Visible" GridLinesVisibility="All" Margin="10" Name="dgCitoyens" AutoGenerateColumns="False" IsReadOnly="True" MouseDoubleClick="DgCitoyen_DoubleClick">
<DataGrid ItemsSource="{Binding Source={StaticResource citoyenCollectionViewSource}}" Background="White" Grid.Row="2" VerticalScrollBarVisibility="Visible" GridLinesVisibility="All" Margin="10" Name="dgCitoyens" AutoGenerateColumns="False" IsReadOnly="True" MouseDoubleClick="DgCitoyen_DoubleClick">
<DataGrid.Columns>
<DataGridTextColumn Header="Civilité" Visibility="{Binding Source={x:Reference civiliteViewCheckBox}, Path=IsChecked, Converter={StaticResource Bool2VisibilityConv}}" Binding="{Binding Civilite}" Width="*"/>
<DataGridTextColumn Header="Nom" Visibility="{Binding Source={x:Reference nomViewCheckBox}, Path=IsChecked, Converter={StaticResource Bool2VisibilityConv}}" Binding="{Binding Nom}" Width="*"/>

View File

@ -4,6 +4,7 @@ using System.Data.Entity;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Input;
using System.Windows.Data;
namespace Hermes {
/// <summary>
@ -13,6 +14,7 @@ namespace Hermes {
private ModelContext dbContext = null;
private CitoyenModal citoyenModal = new CitoyenModal();
private PreferencesModal preferencesModal = new PreferencesModal();
private CollectionViewSource citoyenCollectionViewSource = null;
public MainWindow() {
dbContext = ModelContext.Getinstance();
@ -27,7 +29,9 @@ namespace Hermes {
preferencesModal.Owner = this;
dbContext.CitoyenSet.Load();
dbContext.Preferences.Load();
dgCitoyens.ItemsSource = dbContext.CitoyenSet.Local;
citoyenCollectionViewSource = (CollectionViewSource) this.FindResource("citoyenCollectionViewSource");
citoyenCollectionViewSource.Source = dbContext.CitoyenSet.Local;
//dgCitoyens.ItemsSource = dbContext.CitoyenSet.Local;
}
private void Options_Click(object sender, RoutedEventArgs e) {
@ -64,10 +68,32 @@ namespace Hermes {
}
}
private void Rechercher_Click(object sender, RoutedEventArgs e) {
citoyenCollectionViewSource.Filter += new FilterEventHandler(CitoyenFilter);
//citoyenCollectionViewSource.View.Refresh();
}
private void Reinitialiser_Click(object sender, RoutedEventArgs e) {
citoyenCollectionViewSource.Filter -= new FilterEventHandler(CitoyenFilter);
//citoyenCollectionViewSource.View.Refresh();
}
protected override void OnClosed(EventArgs e) {
dbContext.Dispose();
base.OnClosed(e);
Application.Current.Shutdown();
}
private void CitoyenFilter(object sender, FilterEventArgs e) {
Citoyen citoyen = (Citoyen) e.Item;
e.Accepted = true;
if(citoyen != null) {
if(!String.IsNullOrWhiteSpace(professionFilterTextBox.Text)) {
if(!citoyen.Profession.ToLower().Contains(professionFilterTextBox.Text.ToLower())) {
e.Accepted = false;
}
}
}
}
}
}