Загрузка данных
<Page x:Class="primeapp.Pages.ClientsPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ClientsPage">
<Grid Margin="15">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Text="Список клиентов"
FontSize="22"
FontWeight="Bold"
Margin="0,0,0,15"/>
<DataGrid x:Name="ClientsGrid"
Grid.Row="1"
AutoGenerateColumns="False"
IsReadOnly="True"
CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ClientID}" Width="80"/>
<DataGridTextColumn Header="ФИО" Binding="{Binding FullName}" Width="*"/>
<DataGridTextColumn Header="Телефон" Binding="{Binding Phone}" Width="160"/>
<DataGridTextColumn Header="Дата рождения" Binding="{Binding BirthDate, StringFormat=dd.MM.yyyy}" Width="150"/>
<DataGridTextColumn Header="Номер абонемента" Binding="{Binding MembershipNumber}" Width="170"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Page>
using System.Linq;
using System.Windows.Controls;
using primeapp.Database;
namespace primeapp.Pages
{
public partial class ClientsPage : Page
{
public ClientsPage()
{
InitializeComponent();
ClientsGrid.ItemsSource = ConnectToDb.conDb.Clients.ToList();
}
}
}
<Page x:Class="primeapp.Pages.TrainersPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="TrainersPage">
<Grid Margin="15">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Text="Список тренеров"
FontSize="22"
FontWeight="Bold"
Margin="0,0,0,15"/>
<DataGrid x:Name="TrainersGrid"
Grid.Row="1"
AutoGenerateColumns="False"
IsReadOnly="True"
CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding TrainerID}" Width="80"/>
<DataGridTextColumn Header="ФИО" Binding="{Binding FullName}" Width="*"/>
<DataGridTextColumn Header="Специализация" Binding="{Binding Specialization}" Width="220"/>
<DataGridTextColumn Header="Телефон" Binding="{Binding Phone}" Width="160"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Page>
using System.Linq;
using System.Windows.Controls;
using primeapp.Database;
namespace primeapp.Pages
{
public partial class TrainersPage : Page
{
public TrainersPage()
{
InitializeComponent();
TrainersGrid.ItemsSource = ConnectToDb.conDb.Trainers.ToList();
}
}
}
<Page x:Class="primeapp.Pages.BookingPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="BookingPage">
<Grid Margin="15">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Text="Запись на тренировку"
FontSize="22"
FontWeight="Bold"
Margin="0,0,0,15"/>
<Border Grid.Row="1" BorderBrush="Gray" BorderThickness="1" Padding="10" Margin="0,0,0,15">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="180"/>
<ColumnDefinition Width="250"/>
<ColumnDefinition Width="180"/>
<ColumnDefinition Width="250"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="Клиент:" VerticalAlignment="Center" Margin="0,0,10,10"/>
<ComboBox x:Name="ClientCb"
Grid.Column="1"
Height="28"
Margin="0,0,10,10"/>
<TextBlock Grid.Row="1" Text="Тренер:" VerticalAlignment="Center" Margin="0,0,10,10"/>
<ComboBox x:Name="TrainerCb"
Grid.Row="1"
Grid.Column="1"
Height="28"
Margin="0,0,10,10"/>
<TextBlock Grid.Row="2" Text="Дата:" VerticalAlignment="Center" Margin="0,0,10,10"/>
<DatePicker x:Name="TrainingDateDp"
Grid.Row="2"
Grid.Column="1"
Height="28"
Margin="0,0,10,10"/>
<TextBlock Grid.Row="3" Text="Время (чч:мм):" VerticalAlignment="Center" Margin="0,0,10,10"/>
<TextBox x:Name="TimeTb"
Grid.Row="3"
Grid.Column="1"
Height="28"
Margin="0,0,10,10"/>
<TextBlock Grid.Row="4" Text="Комментарий:" VerticalAlignment="Center" Margin="0,0,10,0"/>
<TextBox x:Name="CommentTb"
Grid.Row="4"
Grid.Column="1"
Height="28"
Margin="0,0,10,0"/>
<Button Grid.Row="4"
Grid.Column="3"
Content="Записать"
Width="130"
Height="35"
HorizontalAlignment="Left"
Click="AddBookingBtn_Click"/>
</Grid>
</Border>
<DataGrid x:Name="BookingGrid"
Grid.Row="2"
AutoGenerateColumns="False"
IsReadOnly="True"
CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding BookingID}" Width="70"/>
<DataGridTextColumn Header="Клиент ID" Binding="{Binding ClientID}" Width="100"/>
<DataGridTextColumn Header="Тренер ID" Binding="{Binding TrainerID}" Width="100"/>
<DataGridTextColumn Header="Дата" Binding="{Binding TrainingDate, StringFormat=dd.MM.yyyy}" Width="140"/>
<DataGridTextColumn Header="Время" Binding="{Binding TrainingTime}" Width="120"/>
<DataGridTextColumn Header="Комментарий" Binding="{Binding Comment}" Width="*"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Page>
using System;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using primeapp.Database;
namespace primeapp.Pages
{
public partial class BookingPage : Page
{
public BookingPage()
{
InitializeComponent();
LoadData();
}
private void LoadData()
{
ClientCb.ItemsSource = ConnectToDb.conDb.Clients.ToList();
ClientCb.DisplayMemberPath = "FullName";
ClientCb.SelectedValuePath = "ClientID";
TrainerCb.ItemsSource = ConnectToDb.conDb.Trainers.ToList();
TrainerCb.DisplayMemberPath = "FullName";
TrainerCb.SelectedValuePath = "TrainerID";
BookingGrid.ItemsSource = ConnectToDb.conDb.TrainingBookings.ToList();
}
private void AddBookingBtn_Click(object sender, RoutedEventArgs e)
{
if (ClientCb.SelectedValue == null ||
TrainerCb.SelectedValue == null ||
TrainingDateDp.SelectedDate == null ||
string.IsNullOrWhiteSpace(TimeTb.Text))
{
MessageBox.Show("Заполните все обязательные поля", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
TimeSpan parsedTime;
if (!TimeSpan.TryParse(TimeTb.Text.Trim(), out parsedTime))
{
MessageBox.Show("Введите время в формате ЧЧ:ММ", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
TrainingBookings booking = new TrainingBookings()
{
ClientID = (int)ClientCb.SelectedValue,
TrainerID = (int)TrainerCb.SelectedValue,
TrainingDate = TrainingDateDp.SelectedDate.Value,
TrainingTime = parsedTime,
Comment = string.IsNullOrWhiteSpace(CommentTb.Text) ? null : CommentTb.Text.Trim()
};
ConnectToDb.conDb.TrainingBookings.Add(booking);
ConnectToDb.conDb.SaveChanges();
MessageBox.Show("Клиент успешно записан на тренировку", "Успех", MessageBoxButton.OK, MessageBoxImage.Information);
ClientCb.SelectedIndex = -1;
TrainerCb.SelectedIndex = -1;
TrainingDateDp.SelectedDate = null;
TimeTb.Clear();
CommentTb.Clear();
LoadData();
}
}
}