/
Ermoha
/
SqlDataDrivers
Обзор
Документация
Войти
/
Ermoha
/
SqlDataDrivers
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
OrdersForm.cs
162 строки
5 KB
ermoh
Добавьте файлы проекта.
26 май 2026, 22:28
26 май 2026, 22:28
b563253
Код
Авторство
О чём код?
using System; using System.Data; using System.Windows.Forms; namespace Demo { internal partial class OrdersForm : Form { private UserSession session; private int selectedOrderId; public OrdersForm(UserSession currentSession) { session = currentSession; InitializeComponent(); AppHelper.SetAppIcon(this); userLabel.Text = session.FullName; addButton.Visible = session.CanEditOrders; editButton.Visible = session.CanEditOrders; deleteButton.Visible = session.CanEditOrders; commandPanel.Visible = session.CanEditOrders; LoadOrders(); } private void LoadOrders() { try { string sql = "SELECT o.OrderId, " + "ISNULL(STUFF((SELECT N', ' + p.Article + N', ' + CAST(oi.Quantity AS NVARCHAR(10)) " + "FROM dbo.OrderItems oi INNER JOIN dbo.Products p ON p.ProductId = oi.ProductId " + "WHERE oi.OrderId = o.OrderId FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, ''), N'') AS Articles, " + "os.StatusName, pp.Address, " + "ISNULL(CONVERT(NVARCHAR(10), o.OrderDate, 104), N'') AS OrderDate, " + "ISNULL(CONVERT(NVARCHAR(10), o.DeliveryDate, 104), N'') AS DeliveryDate " + "FROM dbo.Orders o " + "INNER JOIN dbo.OrderStatuses os ON os.StatusId = o.StatusId " + "INNER JOIN dbo.PickupPoints pp ON pp.PickupPointId = o.PickupPointId " + "ORDER BY o.OrderId"; DataTable table = DatabaseHelper.GetData(sql); ShowOrders(table); } catch (Exception ex) { AppHelper.ShowError("Не удалось загрузить заказы.\n" + ex.Message); } } private void ShowOrders(DataTable table) { selectedOrderId = 0; ordersPanel.SuspendLayout(); ordersPanel.Controls.Clear(); foreach (DataRow row in table.Rows) { OrderCardControl card = new OrderCardControl(row); card.OrderSelected += OrderCard_OrderSelected; ordersPanel.Controls.Add(card); } ordersPanel.ResumeLayout(); } private void OrderCard_OrderSelected(object sender, EventArgs e) { OrderCardControl card = sender as OrderCardControl; if (card == null) { return; } selectedOrderId = card.OrderId; SelectOrderCard(card); } private void SelectOrderCard(OrderCardControl selectedCard) { foreach (Control control in ordersPanel.Controls) { OrderCardControl card = control as OrderCardControl; if (card != null) { card.SetSelected(card == selectedCard); } } } private void AddButton_Click(object sender, EventArgs e) { using (OrderEditForm form = new OrderEditForm(0)) { if (form.ShowDialog() == DialogResult.OK) { LoadOrders(); } } } private void EditButton_Click(object sender, EventArgs e) { OpenSelectedOrder(); } private void OpenSelectedOrder() { if (selectedOrderId == 0) { AppHelper.ShowError("Выберите заказ."); return; } using (OrderEditForm form = new OrderEditForm(selectedOrderId)) { if (form.ShowDialog() == DialogResult.OK) { LoadOrders(); } } } private void DeleteButton_Click(object sender, EventArgs e) { if (selectedOrderId == 0) { AppHelper.ShowError("Выберите заказ."); return; } DialogResult result = MessageBox.Show( "Удалить выбранный заказ?", "Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result != DialogResult.Yes) { return; } try { DatabaseHelper.ExecuteCommand("DELETE FROM dbo.Orders WHERE OrderId = " + selectedOrderId); LoadOrders(); } catch (Exception ex) { AppHelper.ShowError("Не удалось удалить заказ.\n" + ex.Message); } } private void CloseButton_Click(object sender, EventArgs e) { Close(); } } }