Citat:
nikolajkg: imam jednu tabelu u kojoj su smesteni podaci (marka, model, godina proizvodnje, tip motora, zapremina, snaga, cena, slika...) koje treba da prikazem na windows formi na labelama odnosno picture box-u
Nije uputno da se svi ovi podaci/atributi strpaju u jednu tabelu zbog tzv. anomalija u ažuriranju (a i performansi) ovako modelovane baze podataka, ali ako je ovo neki zadatak za školu i već ti je zadat takav model, onda ok.
Pretpostavimo da su cbMarke i cbModeli objekti klase ComboBox, od kojih prvi služi izlistavanje marki, a drugi za izlistavanje modela.
Ono što najpre treba da uradiš je da za cbMarke dodaš neki event handler koji će da reaguje na promenu izbora marke, npr. SelectedIndexChanged event handler. U Visual Studio-vom dizajneru ovo se radi jednostavno - odeš na properties za cbMarke, nađeš event koji se zove SelectedIndexChanged i upišeš naziv metode (event handler-a) koja će da obrađuje ovaj event. VS će umesto tebe kreirati tu metodu (sa praznim telom), a ti treba da je implementiraš.
Implementaciju započinješ tako što prvo uzmeš izabranu marku iz cbMarke sledećom naredbom:
Code:
string izabranaMarka = (string) cbMarke.SelectedItem;
(Primeti da je neophodno da cbMarke.SelectedItem cast-uješ u string, jer je ComboBox podrazumevano kolekcija objekata tipa object.)
Kada si izvukao vrednost izabrane marke, izvršiš upit:
Code:
SqlCommand cmd = new SqlCommand("SELECT DISTINCT model FROM automobil WHERE marka ='" + izabranaMarka + "'", konekcija);
...
(Ovo DISTINCT omogućava da se svaki model date marke pojavljuje samo jednom u rezultatima pretrage, jer realno postoji mogućnost da u tabeli ima više automobila jednog istog modela, pa bi se bez DISTINCT taj model ponavljao onoliko puta koliko ima takvih automobila.)
Rezultatima koje dobiješ puniš drugi ComboBox (cbModeli), na isti način na koji si punio cbMarke.
[Ovu poruku je menjao escape... dana 07.02.2011. u 23:24 GMT+1]