Database entries + listbox

Status
Niet open voor verdere reacties.

Tommiiee

Gebruiker
Lid geworden
6 feb 2010
Berichten
93
Hoi,

Ik wist geen goed topic titel, maar ik zal het zo goed mogelijk proberen uit te leggen.

Ik heb een database (Access) die een 'Deelnemer' tabel heeft. Hierin worden alle deelnemers opgeslagen.
Vanuit mijn programma kun je nieuwe deelnemers aanmaken, en dus wegschrijven naar de database.
Dan wordt er m.b.v. een Refresh-knop een listbox gevuld met de inhoud van de database.

Bovenstaande werkt allemaal prima.

Wat ik nu wil, is dat wanneer je één deelnemer uit de listbox aanklikt, al zijn informatie (die in de database staat),
in de textboxes komt die normaal gesproken gebruikt worden om een nieuwe gebruiker aan te maken.
Dat je dus informatie krijgt, in plaats van zelf invoert.

Ik heb al een 'getDeelnemer' en 'getDeelnemers' query, maar ik heb geen idee hoe ik d.m.v. het MouseClick event van de listbox kan controleren wat de 'DeelnemerID' is van de geselecteerde index van de listbox..

Kunnen jullie mij helpen? :)

Mvg,
Tom ;)
 
Tom,

Aangezien de standaard listbox items niet echt uitgebreid zijn is het verstandig om in dit geval een eigen variant te schrijven op het listbox item.

In het onderstaande voorbeeld heb ik een Custom Listbox Item voor je geschreven met twee losse eigenschappen.
DeelnemerID: Deze eigenschap is een INT waar je dus het ID van de deelnemer in op kunt slaan
Text: Deze eigenschap geeft net zoals bij andere controls de tekstweer die wordt weergegeven in het listboxitem

Verder heb ik een aangepast versie van de ToString() method gemaakt zodat C# de aangepaste eigenschappen ook kan laten zien op het scherm in de listbox.

Waarschijnlijk weet je wel hoe je met classes om moet gaan maar ook voor eventueel andere bezoekers:

Je maakt een nieuwe class aan en die geef je in dit geval de naam CustomListBoxItem, in het voorbeeld hieronder is de hele class weergegeven maar je hoeft dan alleen nog maar het gedeelte tussen de accolades van namespace te kopieren en te plakken.

[CPP]
using System;

namespace Helpmij_3472007
{
/// <summary>
/// Custom object designed to be a listbox item.
/// This control is created by Matthijs Koopman (m.koopman@simplysoft.nl)
/// </summary>
public partial class CustomListBoxItem : Object
{
//Properties
/// <summary>
/// (INT) Deelnemer ID
/// </summary>
public int DeelnemerID { get; set; }

/// <summary>
/// (STRING) The text that is displayed on the listbox item
/// </summary>
public string Text { get; set; }


//Constructor logic
public CustomListBoxItem()
{
//CONSTRUCTOR LOGIC
}
//Overload constructor 1
public CustomListBoxItem(string _text)
{
//Set the text of this item
this.Text = _text;
}
//Overload constructor 2
public CustomListBoxItem(string _text, int _deelnemerid)
{
//Set the text of the item and the deelnemer id
this.Text = _text;
this.DeelnemerID = _deelnemerid;
}


//To string
public override string ToString()
{
//Return the text
return this.Text;
}
}
}
[/CPP]

Om het aangepast listboxcontrol te kunnen gebruiken kun je in de code het volgende doen:

[CPP]
private void MainForm_Load(object sender, EventArgs e)
{
//Create a new listbox item based on the custom control
CustomListBoxItem _itm = new CustomListBoxItem("Deelnemer 1", 1);
this.lstDeelnemers.Items.Add(_itm);

CustomListBoxItem _itm2 = new CustomListBoxItem("Deelnemer 2", 2);
this.lstDeelnemers.Items.Add(_itm2);
}
[/CPP]

Nu moet er nog een even worden geschreven waarmee je van het geselecteerde item de eigenschappen kunt uitlezen.

[CPP]
private void DeelnemerSelected(object sender, EventArgs e)
{
//Create a customlistboxitem for the selected item
CustomListBoxItem _selecteditem = (CustomListBoxItem)this.lstDeelnemers.SelectedItem;

//Show the deelnemer id
MessageBox.Show(_selecteditem.Text + " heeft id: " + _selecteditem.DeelnemerID.ToString());
}
[/CPP]

nu hoef je alleen nog maar de void DeelnemerSelected te koppelen aan de listbox. Dat kun je doen door de listbox te selecteren en dan in het properties venster op dat bliksemschichtje te klikken en dan bij SelectedIndexChanged de void DeelnemerSelected te selecteren.

Hopelijk is dit wat je zoekt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan