Доделал поиск. Мб по коду, но так то работает.

This commit is contained in:
maksim 2024-11-30 16:06:37 +04:00
parent 7db0881977
commit 43903ceb95
6 changed files with 138 additions and 42 deletions

View File

@ -15,9 +15,17 @@
Foreground="#FFFFFF"
Margin="0,20,0,0" />
<!-- Поиск -->
<TextBox x:Name="SearchTextBox"
Width="560"
VerticalAlignment="Top"
Margin="0,60,0,0"
HorizontalAlignment="Center"
TextChanged="SearchTextBox_TextChanged" />
<!-- Таблица для отображения -->
<DataGrid x:Name="PhysicalPersonsDataGrid"
Margin="20,60,20,80"
Margin="20,100,20,80"
AutoGenerateColumns="True"
Background="#FFFFFF"
Foreground="#000000" />

View File

@ -7,6 +7,7 @@ namespace EmployeeManagmentView.PhysicalPerson
public partial class DeletePhysicalPersonWindow : Window
{
private readonly IPhisicalPersonLogic _phisicalPersonLogic;
private IEnumerable<PhisicalPersonViewModel> _allPersons; // Храним все записи для фильтрации
public DeletePhysicalPersonWindow(IPhisicalPersonLogic phisicalPersonLogic)
{
@ -17,7 +18,8 @@ namespace EmployeeManagmentView.PhysicalPerson
private void LoadPhysicalPersons()
{
PhysicalPersonsDataGrid.ItemsSource = _phisicalPersonLogic.GetFullList();
_allPersons = _phisicalPersonLogic.GetFullList();
PhysicalPersonsDataGrid.ItemsSource = _allPersons;
}
private void DeleteButton_Click(object sender, RoutedEventArgs e)
@ -36,5 +38,29 @@ namespace EmployeeManagmentView.PhysicalPerson
MessageBox.Show("Пожалуйста, выберите физическое лицо для удаления.");
}
}
private void SearchTextBox_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
string searchQuery = SearchTextBox.Text.ToLower(); // Получаем текст для поиска
if (string.IsNullOrWhiteSpace(searchQuery))
{
// Если поле пустое, показываем все записи
PhysicalPersonsDataGrid.ItemsSource = _allPersons;
}
else
{
// Фильтруем записи по всем полям
var filteredList = _allPersons.Where(p =>
p.FullName.ToLower().Contains(searchQuery) || // Поиск по ФИО
p.Address.ToLower().Contains(searchQuery) || // Поиск по адресу
p.Telephone.Contains(searchQuery) || // Поиск по телефону
p.Gender.ToLower().Contains(searchQuery) || // Поиск по полу
p.Birthday.ToString("dd.MM.yyyy").Contains(searchQuery) // Поиск по дате рождения
).ToList();
PhysicalPersonsDataGrid.ItemsSource = filteredList;
}
}
}
}

View File

@ -8,7 +8,6 @@
Background="#0D2D4F">
<Grid>
<!-- Заголовок окна -->
<TextBlock Text="Редактирование физического лица"
HorizontalAlignment="Center" VerticalAlignment="Top"
@ -16,10 +15,7 @@
Foreground="#FFFFFF"
Margin="0,20,0,0" />
<!-- Остальная часть как в AddPhysicalPersonWindow.xaml -->
<!-- Сетка для ввода данных в два столбца -->
<Grid Margin="0,60">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
@ -107,7 +103,20 @@
Margin="0,5"
ToolTip="Введите номер телефона" HorizontalAlignment="Center"/>
</StackPanel>
<!-- Поле для поиска физических лиц -->
<StackPanel Grid.Row="3" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10">
<Label Content="Поиск физического лица" Foreground="White" HorizontalAlignment="Center"/>
<TextBox x:Name="SearchTextBox"
Width="250" Height="40"
Margin="0,5"
ToolTip="Введите для поиска"
HorizontalAlignment="Center"
TextChanged="SearchTextBox_TextChanged"/>
</StackPanel>
<!-- Поле для выбора физического лица -->
<StackPanel Grid.Row="4" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10">
<Label Content="Выберите физическое лицо" Foreground="White" HorizontalAlignment="Center"/>
<ComboBox x:Name="PhysicalPersonComboBox"
Width="400" Height="40"
@ -116,7 +125,6 @@
</StackPanel>
</Grid>
<!-- Кнопка для сохранения изменений -->
<Button Content="Сохранить изменения"
Width="250" Height="40"
@ -125,6 +133,5 @@
Background="#004890" Foreground="#FFFFFF"
Click="SaveButton_Click"
HorizontalAlignment="Center" Margin="0,10,0,10"/>
</Grid>
</Window>

View File

@ -52,6 +52,23 @@ namespace EmployeeManagmentView.PhysicalPerson
}
}
// Фильтрация списка физических лиц по всем полям
private void SearchTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
var searchText = SearchTextBox.Text.ToLower();
var filteredPersons = _physicalPersons
.Where(p => p.Name.ToLower().Contains(searchText) ||
p.Surname.ToLower().Contains(searchText) ||
p.Patronymic.ToLower().Contains(searchText) ||
p.Gender.ToLower().Contains(searchText) ||
p.Address.ToLower().Contains(searchText) ||
p.Telephone.ToLower().Contains(searchText) ||
p.Birthday.ToString("dd.MM.yyyy").Contains(searchText) // Поиск по дате рождения
).ToList();
PhysicalPersonComboBox.ItemsSource = filteredPersons;
}
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
if (PhysicalPersonComboBox.SelectedValue is int selectedPersonId)

View File

@ -15,9 +15,17 @@
Foreground="#FFFFFF"
Margin="0,20,0,0" />
<!-- Поиск -->
<TextBox x:Name="SearchTextBox"
Width="560"
VerticalAlignment="Top"
Margin="0,60,0,0"
HorizontalAlignment="Center"
TextChanged="SearchTextBox_TextChanged" Height="20" />
<!-- Таблица для отображения -->
<DataGrid x:Name="PhysicalPersonsDataGrid"
Margin="20,60,20,20"
Margin="20,100,20,20"
AutoGenerateColumns="True"
Background="#FFFFFF"
Foreground="#000000" />

View File

@ -1,4 +1,6 @@
using EmployeeManagmentContracts.BusinessLogicContracts;
using EmployeeManagmentContracts.ViewModels;
using System.Linq;
using System.Windows;
namespace EmployeeManagmentView.PhysicalPerson
@ -6,6 +8,7 @@ namespace EmployeeManagmentView.PhysicalPerson
public partial class ViewPhysicalPersonsWindow : Window
{
private readonly IPhisicalPersonLogic _phisicalPersonLogic;
private IEnumerable<PhisicalPersonViewModel> _allPersons; // Храним все записи для фильтрации
public ViewPhysicalPersonsWindow(IPhisicalPersonLogic phisicalPersonLogic)
{
@ -16,7 +19,34 @@ namespace EmployeeManagmentView.PhysicalPerson
private void LoadPhysicalPersons()
{
PhysicalPersonsDataGrid.ItemsSource = _phisicalPersonLogic.GetFullList();
_allPersons = _phisicalPersonLogic.GetFullList();
PhysicalPersonsDataGrid.ItemsSource = _allPersons;
}
private void SearchTextBox_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
string searchQuery = SearchTextBox.Text.ToLower(); // Получаем текст для поиска
if (string.IsNullOrWhiteSpace(searchQuery))
{
// Если поле пустое, показываем все записи
PhysicalPersonsDataGrid.ItemsSource = _allPersons;
}
else
{
// Фильтруем записи по всем полям
var filteredList = _allPersons.Where(p =>
p.Name.ToLower().Contains(searchQuery) ||
p.Surname.ToLower().Contains(searchQuery) ||
p.Patronymic.ToLower().Contains(searchQuery) || // Поиск по ФИО
p.Address.ToLower().Contains(searchQuery) || // Поиск по адресу
p.Telephone.Contains(searchQuery) || // Поиск по телефону
p.Gender.ToLower().Contains(searchQuery) || // Поиск по полу
p.Birthday.ToString("dd.MM.yyyy").Contains(searchQuery) // Поиск по дате рождения
).ToList();
PhysicalPersonsDataGrid.ItemsSource = filteredList;
}
}
}
}