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");