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
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
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();
}
}