Sdílet prostřednictvím

Jak ve c# winforms udělat databrig ve kterém se budou zobrazovat data z databáze.

Euphoria 10 Reputační body
2025-04-28T19:31:11.8466667+00:00

Dobrý den, potřeboval bych udělat databrig ve kterém budou data z databáze a ještě tlačítka na přidání, úpravu a odebrání dat.

Centrum komunity | Nemonitorováno
Počet komentářů: 0 Žádné komentáře
Počet hlasů: {count}

Odpovědi: 2

Seřadit podle: Nejužitečnější
  1. Barbar 30 Reputační body
    2025-04-28T19:41:49.28+00:00

    //WINFORMS - Formulář pro přidávání záznamů

    using CustomerEvidenceApp.Entities; // Import entit pro práci s databází

    namespace CustomerEvidenceApp

    {

    public partial class CustomerEditForm : Form

    {

    public CustomerEditForm()

    {

    InitializeComponent(); // Inicializace komponent formuláře

    }

    private void Form1_Load(object sender, EventArgs e)

    {

    // Naplnění ComboBoxu pro pohlaví (Gender)

    List<KeyValuePair<string, string>> genders = new List<KeyValuePair<string, string>>();

    var maleGender = new KeyValuePair<string, string>("Muž", "male");

    var femaleGender = new KeyValuePair<string, string>("Žena", "female");

    genders.Add(maleGender);

    genders.Add(femaleGender);

    comboBox_Gender.DataSource = genders; // Nastavení datového zdroje

    ComboBoxu comboBox_Gender.DisplayMember = "Key"; // Zobrazený text

    comboBox_Gender.ValueMember = "Value"; // Hodnota pro zpracování

    }

    private void button_Save_Click(object sender, EventArgs e)

    {

    // Ověření vstupních dat pomocí Validating eventů

    if (!this.ValidateChildren())

    {

    return; // Pokud validace selže, ukončíme metodu

    }

    // Alternativní ověření pomocí errorProvideru

    // Vyžaduje implementaci metody ReallyHasErrors()

    if (errorProvider_Validation.ReallyHasErrors())

    {

    return; // Pokud jsou chyby, ukončíme metodu

    }

    // Vytvoření nové instance zákazníka

    Customer customer = new Customer();

    customer.FullName = textBox_FullName.Text; // Přiřazení jména

    customer.Birthday = dateTimePicker_Birthday.Value; // Přiřazení data narození

    customer.IQ = Convert.ToInt32(numericUpDown_IQ.Value); // Přiřazení IQ

    // Přiřazení pohlaví, pokud je vybráno

    if (comboBox_Gender.SelectedValue is not null)

    {

    customer.Gender = comboBox_Gender.SelectedValue.ToString()!;

    }

    customer.GdprAgreement = checkBox_GdprAgreement.Checked; // Přiřazení souhlasu s GDPR

    // Uložení zákazníka do databáze

    ApplicationDbContext dbContext = new ApplicationDbContext();

    // Vytvoření kontextu databáze

    dbContext.Customers.Add(customer); /

    / Přidání zákazníka do DbSetu

    dbContext.SaveChanges();

    // Uložení změn do databáze

    this.DialogResult = DialogResult.OK; // Nastavení výsledku dialogu na OK

    }

    private void dateTimePicker_Birthday_Validating(object sender, System.ComponentModel.CancelEventArgs e)

    {

    DateTime date = dateTimePicker_Birthday.Value;

    if (DateOnly.FromDateTime(date) >= DateOnly.FromDateTime(DateTime.Now))

    {

    // Pokud je datum narození v budoucnosti, zobrazíme chybu errorProvider_Validation.SetError(dateTimePicker_Birthday, "Datum narození nesmí být v budoucnosti.");

    }

    else

    {

    // Pokud je datum v pořádku, odstraníme chybu errorProvider_Validation.SetError(dateTimePicker_Birthday, null); }

    }

    }

    }

    Počet komentářů: 0 Žádné komentáře

  2. Karel Daniel 0 Reputační body
    2025-04-28T19:59:27.94+00:00

    WINFORMS - Načítání záznamů

    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 CustomerEvidenceApp

    {

    public partial class CustomerListForm : Form

    {

    public CustomerListForm()

    {

    InitializeComponent(); // Inicializace komponent formuláře

    }

    private void CustomerListForm_Load(object sender, EventArgs e)

    {

    LoadCustomers(); // Načtení zákazníků při načtení formuláře

    }

    private void button_Add_Click(object sender, EventArgs e)

    {

    // Otevření formuláře pro přidání nového zákazníka

    CustomerEditForm form = new CustomerEditForm();

    DialogResult result = form.ShowDialog(); // Zobrazení formuláře jako dialog

    if (result == DialogResult.OK)

    {

    LoadCustomers();

    // Po úspěšném přidání načteme znovu seznam zákazníků

    }

    }

    private void LoadCustomers()

    {

    // Vytvoření instance databázového kontextu

    ApplicationDbContext dbContext = new ApplicationDbContext();

    // Načtení seznamu zákazníků z databáze a přiřazení jako datový zdroj pro DataGridView this.dataGridView_Customers.DataSource = dbContext.Customers.ToList();

    }

    }

    }

    //Entita

    using System;

    using System.Collections.Generic;

    using System.ComponentModel.DataAnnotations;

    using System.ComponentModel.DataAnnotations.Schema;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    namespace CustomerEvidenceApp.Entities

    {

    [Table("customers")]
    
    public class Customer
    
    {
    
        [Key]
    
        public int Id { get; set; }
    
        public string FullName { get; set; }
    
        public DateTime Birthday { get; set; }
    
        public int IQ { get; set; }
    
        public string Gender { get; set; }
    
        public bool GdprAgreement { get; set; }
    
    }
    ```}
    
    ////AppDbContext
    
    using CustomerEvidenceApp.Entities;
    
    using Microsoft.EntityFrameworkCore;
    
    namespace CustomerEvidenceApp
    
    {
    
    ```powershell
    public class ApplicationDbContext: DbContext
    
    {
    
        public DbSet<Customer> Customers { get; set; }
    
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    
        {
    
            //---- Klasický přístup do MySQL databáze -----
    
            //optionsBuilder.UseMySQL("server=;database=;user=;password=");
    
            //---- Alternativní přístup do SQLite databáze
    
            optionsBuilder.UseSqlite("DataSource=customer.db");
    
        }
    
    }
    ```}
    
    //ErrorProviderExtensions.cs
    
    using System;
    
    using System.Collections.Generic;
    
    using System.Linq;
    
    using System.Reflection;
    
    using System.Text;
    
    using System.Threading.Tasks;
    
    namespace CustomerEvidenceApp
    
    {
    
    ```go
    public static class ErrorProviderExtensions
    
    {
    
        public static bool ReallyHasErrors(this ErrorProvider provider)
    
        {
    
            // ErrorProvider.HasErrors doesn't actually work; see https://github.com/dotnet/winforms/issues/10424
    
            // If HasErrors = false then there definately are 0 errors.
    
            // If HasErrors = true then there MAY be errors.
    
            if (!provider.HasErrors) { return false; }
    
            // There is no public property to get the list of Errors
    
            var privateItems = (System.Collections.IDictionary)(typeof(ErrorProvider).GetField("_items", BindingFlags.NonPublic | BindingFlags.Instance)!.GetValue(provider)!);
    
            // privateItems is Dictionary<Control, ControlItem> but ControlItem is an internal class.
    
            var controls = privateItems.Keys;
    
            foreach (Control item in controls)
    
            {
    
                if(!string.IsNullOrEmpty(provider.GetError(item))) { return true; }
    
            }
    
            return false;
    
        }
    
    }
    ```}
    
    ////Program 
    
    namespace CustomerEvidenceApp
    
    {
    
    ```typescript
    internal static class Program
    
    {
    
        /// <summary>
    
        ///  The main entry point for the application.
    
        /// </summary>
    
        [STAThread]
    
        static void Main()
    
        {
    
            // To customize application configuration such as set high DPI settings or default font,
    
            // see https://aka.ms/applicationconfiguration.
    
            InitializeDatabase();
    
            ApplicationConfiguration.Initialize();
    
            Application.Run(new CustomerListForm());
    
        }
    
        static void InitializeDatabase()
    
        {
    
            ApplicationDbContext dbContext = new ApplicationDbContext();
    
            dbContext.Database.EnsureCreated();
    
        }
    
    }
    ```}
    
    Počet komentářů: 0 Žádné komentáře

Vaše odpověď

Odpovědi mohou být autorem otázky označeny jako přijaté odpovědi, což uživatelům pomůže zjistit, že odpověď vyřešila autorův problém.