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"> Title="Hermes" Height="512" Width="1024">
<Window.Resources> <Window.Resources>
<BooleanToVisibilityConverter x:Key="Bool2VisibilityConv"/> <BooleanToVisibilityConverter x:Key="Bool2VisibilityConv"/>
<CollectionViewSource x:Key="citoyenCollectionViewSource"/>
</Window.Resources> </Window.Resources>
<Grid Background="WhiteSmoke"> <Grid Background="WhiteSmoke">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="20"/> <RowDefinition Height="20"/>
<RowDefinition Height="100"/> <RowDefinition Height="90"/>
<RowDefinition Height="*"/> <RowDefinition Height="*"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Menu Grid.Row="0" Background="White"> <Menu Grid.Row="0" Background="White">
@ -59,19 +60,44 @@
</MenuItem> </MenuItem>
</Menu> </Menu>
<WrapPanel Grid.Row="1" Margin="10"> <WrapPanel Grid.Row="1" Margin="10">
<StackPanel Margin="5"> <StackPanel Margin="5,5,0,0">
<Label>Age :</Label> <Label>Age :</Label>
<WrapPanel> <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 IsSelected="True">Égal à</ComboBoxItem>
<ComboBoxItem>Supérieur à</ComboBoxItem> <ComboBoxItem>Supérieur à</ComboBoxItem>
<ComboBoxItem>Inférieur à</ComboBoxItem> <ComboBoxItem>Inférieur à</ComboBoxItem>
</ComboBox> </ComboBox>
<TextBox VerticalContentAlignment="Center" HorizontalAlignment="Left" Height="23" Width="40"/> <TextBox Name="ageFilterTextBox" VerticalContentAlignment="Center" HorizontalAlignment="Left" Height="23" Width="40"/>
</WrapPanel> </WrapPanel>
</StackPanel> </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> </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> <DataGrid.Columns>
<DataGridTextColumn Header="Civilité" Visibility="{Binding Source={x:Reference civiliteViewCheckBox}, Path=IsChecked, Converter={StaticResource Bool2VisibilityConv}}" Binding="{Binding Civilite}" Width="*"/> <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="*"/> <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.Collections.Generic;
using System.Windows; using System.Windows;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Data;
namespace Hermes { namespace Hermes {
/// <summary> /// <summary>
@ -13,6 +14,7 @@ namespace Hermes {
private ModelContext dbContext = null; private ModelContext dbContext = null;
private CitoyenModal citoyenModal = new CitoyenModal(); private CitoyenModal citoyenModal = new CitoyenModal();
private PreferencesModal preferencesModal = new PreferencesModal(); private PreferencesModal preferencesModal = new PreferencesModal();
private CollectionViewSource citoyenCollectionViewSource = null;
public MainWindow() { public MainWindow() {
dbContext = ModelContext.Getinstance(); dbContext = ModelContext.Getinstance();
@ -27,7 +29,9 @@ namespace Hermes {
preferencesModal.Owner = this; preferencesModal.Owner = this;
dbContext.CitoyenSet.Load(); dbContext.CitoyenSet.Load();
dbContext.Preferences.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) { 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) { protected override void OnClosed(EventArgs e) {
dbContext.Dispose(); dbContext.Dispose();
base.OnClosed(e); base.OnClosed(e);
Application.Current.Shutdown(); 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;
}
}
}
}
} }
} }