
A mellékelt példa kipróbálásához hozzon létre egy DataGrid08 virtuális könyvtárat a web kiszolgálón, mely mutasson a mellékelt példa könyvtárára. Futtatás előtt a WebForm1.aspx.cs 64. sorában lévő SqlConnection sztringet javítsa úgy, hogy elérhető legyen az ön rendszerében lévő MS SQL szerver.
Nézzük most a megvalósítást. A WebForm-ra miután feltettünk egy DataGrid kontrollt, válasszuk a jobb gombra megjelenő menüből a Property Builder menüpontot. A Columns lapon az Available Columns listából válasszuk a HyperLink Column elemet és mozgassuk át a Selected Columns listájába.
Nézzük milyen lehetőségeink vannak a HyperLinkColumn properties-ben.
A Text mezőben megadhatunk egy tetszőleges feliratot, mely minden cellában megjelenik. Ha cellánként különböző feliratot szeretnénk és az adatforrásban van egy olyan mező, melynek értékeit felhasználhatnánk e célra, akkor a Text field mezőbe írjuk ennek nevét.
Tetszőleges URL-t megadhatunk az URL mezőbe, de lehetőség van az URL format string-nél is egy URL megadásra, melyben kapcsos zárójelek között változót is használhatunk, pl.: WebForm1.aspx?orderid={0}. Ekkor a {0} helyére az URL field mezőben megadott adatforrás adott értéke kerül. Jelen példánknál maradva a {0} helyére az SQL lekérdezés adott sorának az OrderID mezőjének értéke lesz behelyettesítve.
Ennyi előkészítés után most nézzük a forráskódot.
Itt a lap betöltésekor meghívjuk belső ShowData nevű függvényünket, mely egyetlen sztring paramétert vár, melyben az aktuális OrderID értékét kell, hogy átadjuk.
private void Page_Load(object sender, System.EventArgs e)
{
ShowData(Request.QueryString["orderid"]);
}
A program működése a ShowData függvényen belül kettéválik. Amikor a program indul, akkor nyilván a felhasználó még nem kattinthatott egyik linkre sem, így az url-ben nem fog szerepelni az OrderID paramétert. Ekkor a fő (master) tábla adatait kell megjelenítenünk, mely tartalmazza a linkeket az adott detail táblára vonatkozólag. Ha valamely linkre kattint a felhasználó, mely mondjuk így néz ki: http://localhost/DataGrid08/WebForm1.aspx?orderid=10254, akkor ott már adott lesz az OrderID paraméter, így megjeleníthetjük a detail táblát. Ezt felhasználva az OrderID paraméter meglététől függően kettéválaszthatjuk a programunk futását a ShowData függvényen belül.
Első lépésként létrehozunk egy kapcsolatot az SQL szerverrel.
private void ShowData(string id)
{
SqlConnection connection = new SqlConnection("data source=as1\\as1sql;user id=sa;password=;initial catalog=northwind");
connection.Open();
...
Ezt követően ellenőrizzük, hogy az OrderID paraméter adott-e. Ha nem, akkor az Orders táblára futtatunk egy lekérdezést, ellenkező esetben az Order Details táblára.
if (id == null)
{
da = new SqlDataAdapter("select OrderID, CustomerID from Orders", connection);
}
else
{
da = new SqlDataAdapter("select * from \"Order Details\" where OrderID=" + id, connection);
}
Ezt követően már csak az adatok megjelenítése marad hátra, mely a szokásos módon történik.
da.Fill(ds, "Orders");
DataGrid1.DataSource = new DataView(ds.Tables["Orders"]);
DataGrid1.DataBind();
}