Winforms adding customers

Max 0 Reputation points
2025-04-28T20:16:02.73+00:00

I need to help with winforms adding list my main form looks like this

public partial class JobOfferDemandGridForm : Form

{

    public BindingList<JobOfferDemand> Demands { get; set; }

    /// <summary>

    /// Konstruktor formuláře po nás vyžaduje předání konkrétního identifikátoru pracovní nabídky a již vytvořeného databázového kontextu

    /// </summary>

    /// <param name="id">Identifikátor (primární klíč) již vytvořené pracovní nabídky</param>

    /// <param name="dbContext">Již vytvořená instance databázového kontextu. Jelikož je tento formulář vytvořen až po JobOffersGridForm, můžeme si databázový kontext předávat jako lopatu na stavbě.</param>

    public JobOfferDemandGridForm(int id, AppDbContext dbContext)

    {

        InitializeComponent();

        //1. Načíst pracovní poptávky z databáze

        List<JobOfferDemand> demandsFromDb = dbContext.JobOfferDemands

            .Where(x => x.JobOfferId == id)

            .ToList();

        //2. Vytvořit BindingList, který bude předvyplněný daty z databáze (demandsFromDb)

        Demands = new BindingList<JobOfferDemand>(demandsFromDb);

        //3. Napárovat naší instanci BindingListu do datového zdroje data gridu

        dataGridView_Demands.DataSource = Demands;

    }

    private void button_Add_Click(object sender, EventArgs e)

    {

        JobOfferDemandEditForm dlg = new JobOfferDemandEditForm();

        dlg.ShowDialog();

    }

}

} public partial class JobOffersGridForm : Form

{

 /// <summary>

 /// Vlastnost pro uchování instance vytvořeného databázového kontextu.

 /// Instanci můžeme vytvořit například v konstruktoru nebo v události Load podle situace.

 /// </summary>

 public AppDbContext DbContext { get; set; }

 /// <summary>

 /// Nutná vlastnost pro uchování BindingListu pracovních nabídek, který napárujeme na DataGridView.

 /// </summary>

 public BindingList<JobOffer> JobOffers { get; set; }

 public JobOffersGridForm()

 {

     //Pokud logiku provádíme v konstruktoru,

     //musíme zde nechat JAKO PRVNÍ inicializaci komponent,

     //abychom je mohli dále používat

     InitializeComponent();

     //1. Vytvořit si databázový kontext pro připojení do DB a uložit si ho do proměnné

     DbContext = new AppDbContext();

     //2. Načíst pracovní nabídky z databáze

     List<JobOffer> offersFromDb = DbContext.JobOffers.Include(x => x.Company).ToList();

     //3. Vytvořit BindingList, který bude předvyplněný daty z databáze (offersFromDb)

     JobOffers = new BindingList<JobOffer>(offersFromDb);

     //4. Napárovat naší instanci BindingListu do datového zdroje data gridu

     dataGridView_JobOffers.DataSource = JobOffers;

 }

 /// <summary>

 /// Událost při kliknutí na tlačítko v hlavním menu

 /// </summary>

 private void showDemandsToolStripMenuItem_Click(object sender, EventArgs e)

 {

     //1. Vezmu si vybraný řádek a jeho index

     int selectedIndex = dataGridView_JobOffers.CurrentRow.Index;

     //2. Pomocí indexu jsem schopen si vytáhnout konkrétní pracovní nabídku z našich načtených dat

     JobOffer selectedOffer = JobOffers[selectedIndex];

     //3. Stanovili jsme si, že náš formulář pro zobrazení poptávek k naší nabídce potřebuje vědět identifikátor té nabídky.

     //   To jsme docílili konstruktorem v JobOfferDemandGridForm třídě (formuláři) 

     JobOfferDemandGridForm form = new JobOfferDemandGridForm(selectedOffer.Id, DbContext);

     //4. Otevřeme formulář s poptávkami

     form.ShowDialog();

 }

}

C#
C#
An object-oriented and type-safe programming language that has its roots in the C family of languages and includes support for component-oriented programming.
11,431 questions
{count} votes

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.