Znam da si postavio pitanje za VB, ali ja ću da probam da ti objasnim u C#, a verujem da ćeš se snaći pošto su razlike uglavnom sintaksne. :)
Prvo par stvari o
ListBox kontroli.
Listbox kao kontrola ima kolekciju objekata u propertiju
Items. Ti objekti se prikazuju u vidu liste koja može imati SingleSelect ili MultiSelect metod odabira. Redovi koji se vide na listi se popunjavaju tako što se za svaki objekat iz kolekcije "Items" pozove ToString() metoda (predstavlja tekstualnu reprezentaciju tog objekta) i upiše se string u jedan red. Kontrola ima properti koji predstavlja koji selektovani objekat iz kolekcije "Items" i zove se "SelectedItem", a "Text" properti prestavlja ToString() od selektovanog objekta.
Još jedna stvar koja tebi treba je događaj pod nazivom
SelectedIndexChanged i koji se okida kada se promeni odabrana stavka u listi.
E sad ti možeš da napraviš jednu klasu koja će da predstavlja tabelu iz baze i da uradiš
override metode ToString() da ti prikazuje samo 'Ime Prezime' kada ti treba tekstualna reprezentacija tog objekta, odnosno da bi se samo to prikazivalo na listi.
Evo primer:
Code:
public class MojaOsobaIzBaze
{
public string ime;
public string prezime;
public int JMBG;
public string adresa;
public string telefon;
.
.
.
public override string ToString()
{
return this.ime + " " + this.prezime;
}
}
Sad kada se startuje aplikacija učitaš sve podatke iz baze (ili postaviš na klik na dugme ili neki drugi event) uz pomoć:
Code:
SELECT * FROM MojaTabelaUBaziSaOsobama
u DataSet ili DataTabelu.Onda iteriraš kroz sve vraćene redove i za svaki napraviš novi objekat tipa
MojaOsobaIzBaze, sa podacima u tom redu, i taj objekat dodaš u kolekciju "Items" u "ListBox"
Code:
listBox.Items.Add(mojaOsobaIzBaze1);
Kada se završi iteracija imaćeš u vidljivoj listi spisak svih objekata predstavljenih samo sa njihovim Imenom i Prezimenom. Kada odabereš neki red u listi okinuće se SelectedIndexChanged događaj a u SelectedItem će se upisati ceo MojaOsobaIzBaze objekat.
Evo primera koda kako bi trebalo da izgleda događaj SelectedIndexChanged za listBox:
Code:
private void listBox_SelectedIndexChanged(object sender, EventArgs e)
{
ListBox lista = sender as ListBox;
if (lista != null)
{
imeLabel.Text = (lista.SelectedItem as MojiListBoxItemi).ime;
prezimeLabel.Text = (lista.SelectedItem as MojiListBoxItemi).prezime;
jmbgLabel.Text = (lista.SelectedItem as MojiListBoxItemi).JMBG.ToString();
adresaLabel.Text = (lista.SelectedItem as MojiListBoxItemi).adresa;
telefonLabel.Text = (lista.SelectedItem as MojiListBoxItemi).telefon;
.
.
.
}
}
Preptpostavimo da imaš na formi labele (imeLabel, prezimeLabel, jmbgLabel, adresaLabel, telefonLabel..) u koje će da se upisuju vrednosti selektovanog objekta iz liste.
Evo pokušao sam :) ako ti nešto ne bude jasno ti viči.