Загрузка данных
<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="30"/>
<ColumnDefinition Width="330"/>
</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"/>
<StackPanel Grid.Row="4"
Grid.Column="3"
Orientation="Horizontal"
HorizontalAlignment="Left">
<Button Content="Добавить"
Width="95"
Height="35"
Margin="0,0,10,0"
Click="AddBookingBtn_Click"/>
<Button Content="Изменить"
Width="95"
Height="35"
Margin="0,0,10,0"
Click="EditBookingBtn_Click"/>
<Button Content="Удалить"
Width="95"
Height="35"
Click="DeleteBookingBtn_Click"/>
</StackPanel>
</Grid>
</Border>
<DataGrid x:Name="BookingGrid"
Grid.Row="2"
AutoGenerateColumns="False"
IsReadOnly="True"
CanUserAddRows="False"
SelectionChanged="BookingGrid_SelectionChanged">
<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
{
private TrainingBookings selectedBooking = null;
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 ClearFields()
{
selectedBooking = null;
ClientCb.SelectedIndex = -1;
TrainerCb.SelectedIndex = -1;
TrainingDateDp.SelectedDate = null;
TimeTb.Clear();
CommentTb.Clear();
BookingGrid.SelectedItem = null;
}
private bool ValidateFields(out TimeSpan parsedTime)
{
parsedTime = new TimeSpan();
if (ClientCb.SelectedValue == null ||
TrainerCb.SelectedValue == null ||
TrainingDateDp.SelectedDate == null ||
string.IsNullOrWhiteSpace(TimeTb.Text))
{
MessageBox.Show("Заполните все обязательные поля", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Warning);
return false;
}
if (!TimeSpan.TryParse(TimeTb.Text.Trim(), out parsedTime))
{
MessageBox.Show("Введите время в формате ЧЧ:ММ", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Warning);
return false;
}
return true;
}
private void AddBookingBtn_Click(object sender, RoutedEventArgs e)
{
TimeSpan parsedTime;
if (!ValidateFields(out parsedTime))
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("Запись успешно добавлена", "