Загрузка данных
namespace Zadanie
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class user76_dbEntities : DbContext
{
private static user76_dbEntities _context;
public user76_dbEntities()
: base("name=user76_dbEntities")
{
}
public static user76_dbEntities GetContext()
{
if (_context == null)
_context = new user76_dbEntities();
return _context;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
}
}
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<DockPanel>
<!-- Верхняя часть: поля ввода -->
<StackPanel DockPanel.Dock="Top"
Orientation="Horizontal"
HorizontalAlignment="Center"
Margin="10">
<TextBox x:Name="txtFamilia"
Width="150"
Margin="5" />
<TextBox x:Name="txtImya"
Width="150"
Margin="5" />
<TextBox x:Name="txtOtchestvo"
Width="150"
Margin="5" />
</StackPanel>
<!-- Нижняя часть: кнопки -->
<StackPanel DockPanel.Dock="Bottom"
Orientation="Horizontal"
HorizontalAlignment="Center"
Margin="10">
<Button Content="Добавить"
Width="100"
Margin="5"
x:Name="BtnAdd"
Click="BtnAdd_Click" />
<Button Content="Изменить"
Width="100"
Margin="5"
x:Name="BtnEdit"
Click="BtnEdit_Click" />
<Button Content="Удалить"
Width="100"
Margin="5"
x:Name="BtnDelete"
Click="BtnDelete_Click" />
</StackPanel>
<!-- Центр: таблица -->
<DataGrid x:Name="DataGridZadanie"
AutoGenerateColumns="False"
SelectionChanged="DataGridZadanie_SelectionChanged"
IsReadOnly="True"
SelectionMode="Single"
Margin="10">
<DataGrid.Columns>
<DataGridTextColumn Header="ID"
Binding="{Binding Id}"
Width="Auto" />
<DataGridTextColumn Header="Фамилия"
Binding="{Binding Familia}"
Width="*" />
<DataGridTextColumn Header="Имя"
Binding="{Binding Imya}"
Width="*" />
<DataGridTextColumn Header="Отчество"
Binding="{Binding Otchestvo}"
Width="*" />
</DataGrid.Columns>
</DataGrid>
</DockPanel>
</Window>
using System;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using Zadanie;
namespace WpfApp1
{
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
// Контекст базы данных
private user76_dbEntities _context =
user76_dbEntities.GetContext();
public MainWindow()
{
InitializeComponent();
LoadData(); // загружаем данные при старте
}
// Метод загрузки данных из таблицы БД
private void LoadData()
{
try
{
DataGridZadanie.ItemsSource =
_context.Zadanie.ToList();
}
catch (Exception ex)
{
MessageBox.Show(
$"Ошибка загрузки данных:\n{ex.Message}");
}
}
// Кнопка "Добавить"
private void BtnAdd_Click(object sender, RoutedEventArgs e)
{
try
{
// Проверка, что все поля заполнены
if (string.IsNullOrWhiteSpace(txtFamilia.Text) ||
string.IsNullOrWhiteSpace(txtImya.Text) ||
string.IsNullOrWhiteSpace(txtOtchestvo.Text))
{
MessageBox.Show(
"Заполните все поля перед добавлением!",
"Ошибка",
MessageBoxButton.OK,
MessageBoxImage.Warning);
return;
}
// Создаём новый объект
var newZadanie = new Zadanie
{
Familia = txtFamilia.Text,
Imya = txtImya.Text,
Otchestvo = txtOtchestvo.Text
};
// Добавляем в контекст и сохраняем в БД
_context.Zadanie.Add(newZadanie);
_context.SaveChanges();
// Обновляем DataGrid
LoadData();
// Очищаем поля
txtFamilia.Clear();
txtImya.Clear();
txtOtchestvo.Clear();
MessageBox.Show(
"Запись успешно добавлена!",
"Успех",
MessageBoxButton.OK,
MessageBoxImage.Information);
}
catch (Exception ex)
{
MessageBox.Show(
$"Ошибка при добавлении записи:\n{ex.Message}",
"Ошибка",
MessageBoxButton.OK,
MessageBoxImage.Error);
}
}
// Вывод выбранной записи в TextBox
private void DataGridZadanie_SelectionChanged(
object sender,
SelectionChangedEventArgs e)
{
// Получаем выбранный объект
var selected =
DataGridZadanie.SelectedItem as Zadanie;
if (selected != null)
{
txtFamilia.Text = selected.Familia;
txtImya.Text = selected.Imya;
txtOtchestvo.Text = selected.Otchestvo;
}
}
// Кнопка "Изменить"
private void BtnEdit_Click(object sender, RoutedEventArgs e)
{
try
{
// Проверяем, выбрана ли строка
var selected =
DataGridZadanie.SelectedItem as Zadanie;
if (selected == null)
{
MessageBox.Show(
"Выберите запись для изменения.",
"Ошибка",
MessageBoxButton.OK,
MessageBoxImage.Warning);
return;
}
// Проверяем, что введены данные
if (string.IsNullOrWhiteSpace(txtFamilia.Text) ||
string.IsNullOrWhiteSpace(txtImya.Text) ||
string.IsNullOrWhiteSpace(txtOtchestvo.Text))
{
MessageBox.Show(
"Поля не могут быть пустыми!",
"Ошибка",
MessageBoxButton.OK,
MessageBoxImage.Warning);
return;
}
// Проверяем, изменил ли пользователь что-то
bool changed =
txtFamilia.Text != selected.Familia ||
txtImya.Text != selected.Imya ||
txtOtchestvo.Text != selected.Otchestvo;
if (!changed)
{
MessageBox.Show(
"Вы не внесли изменений.",
"Информация",
MessageBoxButton.OK,
MessageBoxImage.Information);
return;
}
// Применяем изменения
selected.Familia = txtFamilia.Text;
selected.Imya = txtImya.Text;
selected.Otchestvo = txtOtchestvo.Text;
// Сохраняем изменения в БД
_context.SaveChanges();
// Обновляем DataGrid
LoadData();
txtFamilia.Clear();
txtImya.Clear();
txtOtchestvo.Clear();
MessageBox.Show(
"Запись успешно изменена!",
"Успех",
MessageBoxButton.OK,
MessageBoxImage.Information);
}
catch (Exception ex)
{
MessageBox.Show(
$"Ошибка при изменении записи:\n{ex.Message}",
"Ошибка",
MessageBoxButton.OK,
MessageBoxImage.Error);
}
}
// Кнопка "Удалить"
private void BtnDelete_Click(object sender, RoutedEventArgs e)
{
try
{
// Получаем выбранный объект
var selected =
DataGridZadanie.SelectedItem as Zadanie;
if (selected == null)
{
MessageBox.Show(
"Выберите запись для удаления.",
"Ошибка",
MessageBoxButton.OK,
MessageBoxImage.Warning);
return;
}
// Подтверждение удаления
var result = MessageBox.Show(
$"Вы уверены, что хотите удалить запись: " +
$"{selected.Familia} {selected.Imya} {selected.Otchestvo}?",
"Подтверждение удаления",
MessageBoxButton.YesNo,
MessageBoxImage.Question);
if (result == MessageBoxResult.Yes)
{
// Удаляем запись из контекста
_context.Zadanie.Remove(selected);
_context.SaveChanges();
// Обновляем DataGrid
LoadData();
// Очищаем текстбоксы
txtFamilia.Clear();
txtImya.Clear();
txtOtchestvo.Clear();
MessageBox.Show(
"Запись успешно удалена!",
"Успех",
MessageBoxButton.OK,
MessageBoxImage.Information);
}
}
catch (Exception ex)
{
MessageBox.Show(
$"Ошибка при удалении записи:\n{ex.Message}",
"Ошибка",
MessageBoxButton.OK,
MessageBoxImage.Error);
}
}
}
}