HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Web DataGrid kontrol használata


DataGrid 3. rész

Példaprogram letöltése

13360 bájt

Készítünk most egy olyan DataGrid-et, melyben megjelennek a C:\-ben lévő alkönyvtárak. Megvalósítjuk azt, hogy ha a felhasználó rákattint valamelyik elemre a táblázatban, akkor a kiválasztott könyvtár alkönyvtárait mutatjuk meg. Így végiglépkedhetünk az összes könyvtáron.
Ennek megvalósításához meg kell ismerkednünk azzal, hogy miként tudunk a DataGrid-be saját, egyedi adatokat megjeleníteni. Hogyan hozhatunk benne létre olyan oszlopot, melynek elemei link-ként működnek. Hogyan használható a DataGrid lábléce (footer).

Nézzük a szükséges lépéseket sorra.
Tegyünk fel egy DataGrid kontrolt a web lapra, majd kattintsunk a Columns property-jére. A táblázatban megjelenő oszlopokat most manuálisan vesszük fel és nem a DataGrid-re bízzuk azok automatikus generálását. Ehhez adjunk a Selected Columns listához egy Button Column – Select és két Bound Column oszlopot.
Az első Button Column – Select típusú oszlopnál a Header Text tulajdonságnál írjuk be a Name szót. Ez lesz az oszlop tetején megjelenő felirat. Ebben az oszlopban jelenítjük meg az alkönyvtárak neveit és ezeket szeretnénk linként használni, hogy más alkönyvtárakat is ki tudjunk választani. A Text field tulajdonságnál szintén a Name szót írjuk be. Ez lesz annak a mezőnek a neve az DataGrid-hez kapcsolt adatforrásban, melynek értékeit meg kell jeleníteni ebben az oszlopban. A Button Type tulajdonságot hagyjuk az alapértelmezett LinkButton értéken, melynek hatására minden megjelenő adat egy-egy HTML link lesz.
A második, Bound Column típusú oszlopnál a Header Text és a Data Field tulajdonságnál adjuk meg a Created szót. Ebben az oszlopban az adott könyvtár létrehozási időpontját fogjuk megjeleníteni, melyet az adatforrás Created nevű mezőjéből veszünk majd.
A harmadik, szintén Bound Column típusú oszlopnál a Header Text és a Data Field tulajdonságnál adjuk meg a FullPath szót. Ebben az oszlopban az adott könyvtár teljes elérési útvonalát tároljuk, melyet az adatforrás FullPath nevű mezőjéből veszünk majd.
Ezután zárhatjuk ezt a szerkesztő ablakot. A DataGrid AutoGenerateColumns property-t feltétlenül állítsuk hamisra, mert különben a miáltalunk létrehozott oszlopok mellett megjelennek az adatforrás alapján automatikusan generált oszlopok is.
A ShowFooter property igazra állításával megjeleníthetjük a táblázat láblécét. Ennek azt a szerepet szánjuk, hogy megjelenítsük, hogy aktuálisan hány sora van a táblázatnak, vagyis hány alkönyvtára van az adott könyvtárnak.
A Properties ablakban megjelenő tulajdonságok alatt az AutoFormat... linkre kattintva választhatunk egy előre elkészített formázást a DataGrid-hez, melyet a Style kategóriában lévő property-kkel módosíthatunk, finomíthatunk.
Ennyi előkészület után nézzük, hogy mit kell tennünk a forráskódban, hogy a bevezetőben említett funkciók megvalósuljanak.
Kell először is egy globális változó, melyben DataTable típusban tároljuk a megjelenítendő adatokat, melyek dinamikusan változnak az aktuálisan kiválasztott könyvtártól függően.
    private DataTable FDataTable = new DataTable("DirTable");
Létrehozunk a Page osztály Init nevű eseményéhez egy eseménykezelőt.
this.Init += new System.EventHandler(this.Page_Init);
Ennél az eseménykezelőnél adjuk meg, hogy az adatforrás milyen oszlopokat tartalmazzon. Ebből három lesz, mely mind string típusú.
    private void Page_Init(object sender, System.EventArgs e)
    {
      FDataTable.Columns.Add(new DataColumn("Name", typeof(string)));
      FDataTable.Columns.Add(new DataColumn("Created", typeof(string)));      
      FDataTable.Columns.Add(new DataColumn("FullPath", typeof(string)));
Hozzá is kapcsoljuk a DataGrid-hez ezt az adatforrást, mely most még nem tartalmaz adatokat.
      DataGrid1.DataSource = new DataView(FDataTable);                  
Az első oszlop láblécének részébe elhelyezzük az Összesen szót. A későbbiekben majd a második oszlop láblécében jelenítjük meg az aktuális darabszámot.
      DataGrid1.Columns[0].FooterText = "Összesen: ";      
Megváltoztatjuk az első oszlop háttérszínét, hogy ezzel is kiemeljük azokat az adatokat, melyek a linkeket tartalmazzák.
      DataGrid1.Columns[0].ItemStyle.BackColor = Color.Beige;
    }
A következő lépéseket a Page osztály Load eseményének kezelőjében tesszük meg. Mielőtt ebbe belekezdenénk, tegyünk egy kis kitérőt. Amikor majd odajutunk, hogy könyvtárat kell váltanunk és már nem csak a C:\ tartalmát kell megjeleníteni, akkor ezt úgy jelezzük alkalmazásunk felé, hogy azt paraméterezve hívjuk meg a következő módon:
http://localhost/DataGrid03/WebForm1.aspx?newdir=c:\WINDOWS
Bevezettük tehát a newdir paramétert, mely tartalmazza annak az alkönyvtárnak az elérési útját, melyet listáznunk kell. Amikor alkalmazásunk indul, akkor természetesen ez a paraméter még nem jelenik meg, ebből tudhatjuk, hogy a C:\ tartalmára van szükség. A Load eseménykezelőben első lépésként tehát ellenőrizzük, hogy létezik-e már a newdir paraméter. Ha igen, akkor ezt a Label1 felirataként meg is jelenítjük.
    private void Page_Load(object sender, System.EventArgs e)
    {
      string newdir = Request.QueryString["newdir"];
      if (newdir != null)
      {
        Label1.Text = newdir;                
      }
      DataRow row;
A Directory osztálytól kérünk egy sztring tömböt, mely tartalmazni fogja az adott elérési úton található összes alkönyvtár nevét.
      string[] st = Directory.GetDirectories(Label1.Text);      
Ezen a sztring tömbön végigmegyünk egy foreach ciklussal.
      foreach(string s in st)      
      {
A ciklusmagban létrehozunk egy új adat sort, melynek mezőibe eltároljuk a szükséges adatokat: könyvtár név, létrehozási időpont, teljes elérési út.
        row = FDataTable.NewRow();
        row[0] = Path.GetFileName(s);
        row[1] = File.GetCreationTime(s).ToString("G");        
        row[2] = s;
A létrehozott új sort hozzáadjuk az adatforráshoz.
        FDataTable.Rows.Add(row);        
      }             
Aktualizáljuk a második oszlop láblécének szövegét, ahol a darabszám jelenik meg.
      DataGrid1.Columns[1].FooterText = st.Length.ToString() + " db";      
Végső lépésként a DataBind hívásával frissítjük a DataGrid tartalmát.
      DataGrid1.DataBind();      
    }
Végezetül már csak egy megvalósítandó funkció marad hátra: ha a felhasználó rákattint valamely linkre az első oszlopban, akkor az ennek megfelelő alkönyvtár tartalmát kell megjelenítenünk. Ehhez a DataGrid ItemCommand eseményére lesz szükségünk.
Itt pedig nincs más tennivalónk, mint meghívni továbbra is a WebForm1.aspx-et, de most már a newdir paramétert használva, melyben megadjuk, hogy melyik alkönyvtárat kell megjeleníteni, melyet majd a Page Load eseménye dolgoz fel. A newdir paraméter értékét a DataGrid harmadik oszlopában tárolt teljes elérési útvonalból vesszük, melyet most az esemény DataGridCommandEventArgs típusú paraméteréből tudunk kiolvasni, amely tartalmazza a kiválasztott sor minden cellájának adatát.
    private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
      Response.Redirect("WebForm1.aspx?newdir=" + e.Item.Cells[2].Text);
    }      

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2001 évkönyv 354. 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 |