128 lines
5.4 KiB
C#
128 lines
5.4 KiB
C#
using MySql.Data.MySqlClient;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Drawing;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Windows.Forms;
|
||
|
||
namespace Dem2
|
||
{
|
||
public partial class MainForm : Form
|
||
{
|
||
public MainForm()
|
||
{
|
||
InitializeComponent();
|
||
LoadMaterials();
|
||
}
|
||
|
||
private void MainForm_Load(object sender, EventArgs e)
|
||
{
|
||
using (var conn = DataBase.GetConnection())
|
||
{
|
||
conn.Open();
|
||
string sql = @"
|
||
SELECT id, material_name FROM materials
|
||
";
|
||
MySqlDataAdapter adapter = new MySqlDataAdapter(sql, conn);
|
||
DataTable dt = new DataTable();
|
||
adapter.Fill(dt);
|
||
dataGridViewMaterials.DataSource = dt;
|
||
}
|
||
|
||
}
|
||
|
||
private void LoadMaterials()
|
||
{
|
||
try
|
||
{
|
||
// Очисти DataGridView перед загрузкой
|
||
dataGridViewMaterials.Rows.Clear();
|
||
|
||
using (var conn = DataBase.GetConnection())
|
||
{
|
||
conn.Open();
|
||
|
||
// Запрос: выбрать все материалы с типом (JOIN с material_types)
|
||
string sql = @"
|
||
SELECT
|
||
m.id,
|
||
m.material_name,
|
||
COALESCE(mt.type_name, 'Не указан') AS type_name,
|
||
m.current_stock,
|
||
m.unit,
|
||
m.pack_size,
|
||
m.min_stock,
|
||
m.price_per_unit
|
||
FROM materials m
|
||
LEFT JOIN material_types mt ON m.material_type_id = mt.id
|
||
ORDER BY m.material_name";
|
||
|
||
using (var cmd = new MySqlCommand(sql, conn))
|
||
{
|
||
using (var reader = cmd.ExecuteReader())
|
||
{
|
||
while (reader.Read())
|
||
{
|
||
// Добавь строку в DataGridView
|
||
int id = Convert.ToInt32(reader["id"]);
|
||
string name = reader["material_name"].ToString();
|
||
string type = reader["type_name"].ToString();
|
||
decimal currentStock = reader["current_stock"] != DBNull.Value ? Convert.ToDecimal(reader["current_stock"]) : 0;
|
||
string unit = reader["unit"].ToString();
|
||
decimal packSize = reader["pack_size"] != DBNull.Value ? Convert.ToDecimal(reader["pack_size"]) : 0;
|
||
decimal minStock = reader["min_stock"] != DBNull.Value ? Convert.ToDecimal(reader["min_stock"]) : 0;
|
||
decimal pricePerUnit = reader["price_per_unit"] != DBNull.Value ? Convert.ToDecimal(reader["price_per_unit"]) : 0;
|
||
|
||
// Добавляем строку
|
||
dataGridViewMaterials.Rows.Add(id, name, type, currentStock, unit, packSize, minStock, pricePerUnit);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show("Ошибка загрузки материалов: " + ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
}
|
||
}
|
||
|
||
private void Button1_Click(object sender, EventArgs e)
|
||
{
|
||
|
||
var form = new MaterialEditForm();
|
||
if (form.ShowDialog() == DialogResult.OK)
|
||
{
|
||
|
||
LoadMaterials();
|
||
}
|
||
|
||
}
|
||
|
||
private void button3_Click(object sender, EventArgs e)
|
||
{
|
||
// Проверим, выбрана ли строка в DataGridView
|
||
if (dataGridViewMaterials.SelectedRows.Count == 0)
|
||
{
|
||
// Если строка не выбрана, покажем сообщение
|
||
MessageBox.Show("Пожалуйста, выберите материал, для которого нужно посмотреть поставщиков.", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
return; // Прерываем выполнение метода
|
||
}
|
||
|
||
// Получим ID выбранного материала из первой (и единственной) выбранной строки
|
||
// Предполагается, что первый столбец - ID (ColumnId)
|
||
int selectedMaterialId = (int)dataGridViewMaterials.SelectedRows[0].Cells["id"].Value; // Убедись, что имя столбца правильное
|
||
|
||
// Создаём новую форму SupplierListForm, передав ID материала в конструктор
|
||
var supplierForm = new SupplierListForm(selectedMaterialId);
|
||
|
||
// Открываем форму как модальное окно (пользователь не может взаимодействовать с MainForm, пока открыта SupplierListForm)
|
||
supplierForm.ShowDialog();
|
||
}
|
||
}
|
||
}
|
||
|