HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Adatkapcsolás ListBox-hoz


Példaprogram letöltése

8386 bájt

Legyen két adattáblánk. Mindkettőben legyen egy olyan mező, melyben egy kódszám található, amivel összekapcsolhatjuk a rekordokat. Az első táblában legyen a hivatkozás a másodikra. Míg a másodikban minden kódhoz tartozzon egy szöveg.
Amikor az első táblát látjuk a programban, akkor jól jönne, ha mondjuk egy ListBox-ban látható lenne a második tábla szövege és rögtön kijelölt lenne az, amelyikre a hivatkozás történik az első táblában.
Mellékelt példában egy ListBox-ot hozunk létre.

A megvalósításhoz az MS SQL adatbázis-kezelő Northwind nevű példaadatbázisából a Products és Categories táblát használjuk fel. A Products tábla CategoryID mezője hivatkozik a Categories tábla CategoryID mezőjére. A Categories tábla CategoryName mezője pedig az adott kategória megnevezését tárolja sztringként. A feladatban szereplő ListBox-hoz szeretnénk tehát hozzárendelni a Categories tábla CategoryName oszlopát úgy, hogy az aktuálisan kijelölt Products tábla rekordjában lévő CategoryID értéke alapján a ListBox-ban a hozzá tartozó elem legyen a kijelölt.
Első lépésként felépítjük az adatbázis kapcsolatot a szokásos módon az SQLConnection osztállyal.
SqlConnection connection = new SqlConnection("Data Source="+textBox1.Text+";uid="+textBox2.Text+";password="+textBox3.Text+";initial catalog=Northwind;Connect Timeout=3");
Ezt követően futtatunk két lekérdezést a Products és a Categories táblára.
SqlDataAdapter da1 = new SqlDataAdapter("select CategoryID, CategoryName from Categories", connection);
 SqlDataAdapter da2= new SqlDataAdapter("select ProductID, ProductName, CategoryID from Products", connection);
Ezek eredményét tároljuk egy DataSet-ben.
DataSet ds = new DataSet();        
 da1.Fill(ds, "Categories");
 da2.Fill(ds, "Products");
A két DataGrid-hez hozzárendeljük a két lekérdezés eredményét, hogy az látható is legyen.
dataGrid1.SetDataBinding(ds, "Categories");
 dataGrid2.SetDataBinding(ds, "Products");
Ezt követően rendelkeznünk kell, hogy mi és az hogyan legyen a ListBox-unkhoz rendelve. E művelethez négy lépésre lesz szükségünk, elsőként a DataSource property-ében meg kell adnunk azt az adatforrást, ahonnan a lista elemeit vennie kell a ListBox-nak. Ez nem lesz más, mint a tárolt Categories tábla.
listBox1.DataSource=ds.Tables["Categories"];      
A megadott táblában tetszőleges számú oszlop lehet, így meg kell adnunk a ListBox számára, hogy melyikből vegye azokat az értékeket, melyeket meg kell jelenítenie. Ezt a DisplayMember property-ben adhatjuk meg.
listBox1.DisplayMember="CategoryName";
Kell egy olyan mezőt is választanunk, mely tartalmazza azt a kódot, ami alapján össze lehet kötni a DataSource-ben megadott táblát a másik táblával. Ez nyilván a CategoryID mező lesz, melyet a ValueMember property-ben adunk meg.
listBox1.ValueMember="CategoryID";
Végül egy új kapcsolatot kell létrehoznunk, melyet a DataBindings property Add függvényének hívásával tehetünk meg. Itt három paramétert kell átadnunk. Elsőként meg kell adni sztringként annak a property-nek a nevét a ListBox-ból, melyhez kötni szeretnénk az adatokat. Mivel most az a cél, hogy változzon a kijelölése a ListBox-nak ezért a SelectedValue property-t kell választanunk, mivel ez határozza meg, hogy melyik eleme kijelölt a ListBox-nak. Második paraméter az adatforrás, melyet a DataSet osztály képvisel most, végül a DataSet-ből egy táblát és annak egy mezőjét kell megadnunk sztringként. Ez lesz az a mező, melyhez kapcsolódik az imént a DataSource-ben megadott táblából a ValueMember-ben megadott mező.
listBox1.DataBindings.Add("SelectedValue", ds, "Products.CategoryID");    

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 524. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |