C# - DataView osztály bemutatása

forráskód letöltése
Cikkünkben bemutatjuk a DataView osztály lehetőségeit, a lényegesebb property-k és metódusok referenciájának megadásával. A cikk végére kiderül, mire is jó tulajdonképpen egy DataView objektum, miért hasznos a táblák adatainak megjelenítésében, és milyen hatása van a táblához kapcsolt DataView objektumon végzett művelet magára a forrás adattáblára.
A DataView osztály a System.Data névtér eleme, alapvetően az adatbázisokkal kapcsolatos munka könnyebbé tételére született. Reprezentációja lehet egy nézettáblának, melyet az adatbázis egy táblájához hoztunk létre, vagy absztrakt adathalmazok DataTable objektumban való tárolásakor, amikor nincs fizikai adatbázisunk, de szeretnénk eltérő megjelenést kapcsolni egy tábla adataihoz anélkül, hogy az adattábla összetételét befolyásolnánk.
Konkrétan azért született, hogy a DataTable objektum rekordjain műveleteket végezve ez ne érintse a rekordok sorrendjét, vagy számát az adott táblában. Ilyen műveletek a szűrés, keresés, rendezés, vagy a rekordadatok szerkesztése.
Mind ASP.NET, mind Windows alkalmazásokban használható, kiterjesztve felhasználásának lehetőségeit. Valamilyen szempont szerint leképezi az adattábla rekordjait, így két vagy több objektum kapcsolódhat ugyanahhoz a táblához.
Nézzük sorban a gyakran használható property-ket:
AllowDelete
Osztály: DataView
public bool AllowDelete {get; set;}
Megadja, hogy a nézetben engedélyezett-e a törlés. True értéke esetén engedélyezett, false esetén nem.
AllowEdit
Osztály: DataView
public bool AllowEdit {get; set;}
Megadja, hogy a nézetben engedélyezett-e a szerkesztés. True értéke esetén engedélyezett, false esetén nem.
AllowNew
Osztály: DataView
public bool AllowNew {get; set;}
Megadja, hogy a nézetben engedélyezett-e új sor beszúrása. True értéke esetén engedélyezett, false esetén nem.
ApplyDefaultSort
Osztály: DataView
public bool ApplyDefaultSort {get; set;}
Megadja hogy az alapértelmezett rendezés legyen-e érvényben. True esetén igen, false esetén nem.
Count
Osztály: DataView
public int Count {get;}
Megadja a nézet rekordszámát.
Item
Osztály: DataView
public object this[int property] {get;set;}
A DataView objektum indexe tulajdonképpen, segítségével hivatkozhatunk az egyes rekordokra. Például dv[0] megadja a nézet első rekordját.
RowFilter
Osztály: DataView
public virtual string RowFilter {get; set;}
Megadható a szűrés feltétele. Példa látható az alkalmazásban.
Sort
Osztály: DataView
public string Sort {get; set;}
Megadható, hogy előre vagy vissza irányú legyen a rendezés. Értékei: ASC (előre), DESC (vissza) az oszlop neve után írva.
Table
Osztály: DataView
public DataTable Table {get; set;}
A forrás DataTable objektum, melynek rekordjait tartalmazza.
Vizsgáljunk meg néhány metódust is:
AddNew
Osztály: DataView
public virtual DataRowView AddNew(
);
Új rekord adható a nézethez.
Visszatérési érték
DataRowView objektum
Close
Osztály: DataView
protected void Close(
);
A DataView objektum bezárása.
Delete
Osztály: DataView
public void Delete(
int index
);
A meghatározott indexű rekord törlése.
Paraméterek
int index
A törlendő rekord indexe.
Open
Osztály: DataView
protected void Open(
);
A DataView objektum megnyithatása.
A mellékelt példában a Form egy négy füles TabControl kontrollal teszi lehetővé, hogy elvégezzük a műveleteket. A program indulásakor minden DataGrid kontrolban azonos módon a DataTable objektum DefaultView nézete látható.
A programban ez mindig látható a DefaultView fül alatt.
A ’Szűrés’ fülre kattintva egy ComboBox-ban kiválaszthatjuk, hogy mely oszlop szerint, és az alatta található TextBox-nak értéket adva milyen értékkel szűrjük a nézet elemeit.
A ’Rendezés’ fülre kattintva rendezhető a nézet, be kell állítani, hogy mely oszlop szerint és milyen irányú legyen a rendezés.
A ’Törlés nézetből’ fülre kattintva a megadott rekordindexű elem törölhető a nézetből, mely hatással van a forrás adattáblára is, vagyis annak rekordja is törlődik.
Az üres tábla a ’Tábla feltöltése’ gombbal tölthető fel újra.
A DataView objektumokkal tehát jól használható nézeteket hozhatunk létre tábláinkból, akár csak a CREATE VIEW kezdetű SQL paranccsal létrehozott nézetekkel az adatbázisokban.