C# - Adattáblák nézetei

forráskód letöltése
Az adatok tárolása és megjelenítése igen hatékonyan megoldható a .NET rendszerben. A megfelelő objektumok felhasználásával elválasztható az adatok programbeli kezelése és megjelenítése a fizikai adatforrásoktól. Cikkünkben bemutatunk egy .NET objektumot, melynek segítségével egy adott DataSet objektum tábláihoz kapcsolható nézeteket kezelhetjük. Az objektum a DataViewManager, melynek használatát egy példán keresztül ismertetjük.
A mellékelt programban két XML állományban tárolt adathalmazt töltünk be egy DataSet objektumba, melyeket egy DataViewManager objektumba töltünk be, egy típuson belül kezelve a táblákhoz kapcsolódó nézeteket.
Lássuk sorban a property-ket, melyekkel elérhető, hogy a DataViewManager valóban táblanézet-menedzserként funkcionáljon.
DataSet
Osztály: DataViewManager
public DataSet DataSet {get; set;}
Az objektum, melynek tábláit, illetve azok nézeteit elérni kívánjuk.
DataViewSettings
Osztály: DataViewManager
public DataViewSettingCollection DataViewSettings {get;}
Az egyes táblákhoz kapcsolódó nézetbeállítások gyűjteménye. Minden nézetbeállítás egy-egy string, melyet az objektum egy DataView objektum tulajdonságaivá képez le.
DesignMode
Osztály: DataViewManager
public virtual bool DesignMode {get;}
Egy logikai property-ben lekérdezhető, hogy az objektum szerkesztési időben van-e.
Az objektum legfontosabb metódusa a következő:
CreateDataView
Osztály: DataViewManager
public DataView CreateDataView(
DataTable table
);
Generál a tulajdonságok alapján egy DataView objektumot, mely adatforrásként adható egy DataGrid-nek is akár.
Paraméterek
DataTable table
A nézettábla tulajdonos táblája.
Visszatérési érték
DataView objektum, melynek tulajdonságai a DataViewManager DataViewSettings property-jében kerültek beállításra.
Lássuk, hogyan érhetjük el, hogy a DataSet objektum táblái egy DataViewManager objektumban tárolódjanak.
Létrehozunk egy objektumpéldányt:
dvm = new DataViewManager();
Majd a DataSet property-ben megadjuk a DataSet-et:
dvm.DataSet = ds;
És adatforrásként átadjuk azt a dataGrid-nek:
dataGrid3.DataSource = dvm;
A mellékelt alkalmazás Form-ján négy fül található. A Customers és Orders fülek alatt megnézhetjük az eredeti adathalmazokat. Az adatok rendezése fül alatt a táblák adatait rendezhetjük a kiválasztott oszlopok alapján növekvő vagy csökkenő sorrendben.
A rendezéshez generálunk egy DataView-t a megadott táblából úgy, hogy a metódus paraméterében kijelöljük a táblát:
DataView dv = dvm.CreateDataView(ds.Tables[comboBox1.Text]);
Majd a DataView Sort property-jében megadjuk a kívánt oszlop nevét, mely alapján a rendezés megtörténik.
dv.Sort = comboBox2.Text;
Szükség esetén ezt kiegészítjük a DESC karakterlánccal, jelezve, hogy csökkenő rendezés történjen.
if (checkBox1.Checked)
{
  dv.Sort += " DESC";
}
dataGrid3.DataSource = dv;
Az adatok szűrése fül alatt a megfelelő szűrőfeltételt megadva érhetjük el, hogy csak az adott feltételnek megfelelő rekordok jelenjenek meg. Természetesen ezek a beállítások csak a nézettáblákat érintik, az eredeti táblákat nem.
Ismételten generálunk egy DataView-t, majd a szövegmező filter karakterláncát megadjuk a DataView RowFilter property-jében.
DataView dv = dvm.CreateDataView(ds.Tables[comboBox3.Text]);
dv.RowFilter = textBox1.Text;
dataGrid4.DataSource = dv;