HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Felhasználóhoz kötött adatok tárolása


Példaprogram letöltése

10535 bájt

ASP.NET-es alkalmazások esetén minden egyes kliensnél más és más adat tárolása válhat szükségessé. Például egy internetes áruház esetén az adott ügyfél által összeválogatott termékeket nyilvánvalóan ügyfelenként kell tárolnunk, ezek az adatok nem keveredhetnek össze egymással. Erre a feladatra keresünk egy egyszerű megoldást a mellékelt példában.

Mellékelt példa megnyitása előtt szükséges egy SessionData nevű virtuális könyvtár létrehozása, mely a példa könyvtárára mutat. Ehhez nyissa meg a mellékelt mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
Készítünk egy olyan web oldalt, melyen egy TextBox-on keresztül a felhasználó tetszőleges szövegeket vehet fel egy táblázatba. Biztosítanunk kell, hogy ez a táblázat minden egyes kliens esetén tetszőleges tartalmú lehessen.
Web oldal kezelésénél két eset lehetséges. Az egyik eset az, amikor a program először indul, ilyenkor a táblázat még üres. Másik eset az, amikor már egy vagy két sort tartalmaz a táblázat, ez akkor következik be, amikor a felhasználó új adatot ad meg.
Amikor a Page osztály Load eseménye fut, akkor ellenőrizzük az IsPostBack property segítségével, hogy ez az első megjelenése a web oldalunknak, vagy sem. Első megjelenés esetén meghívjuk a LoadData és a SetData belső függvényünket, melyek az adatok megjelenítéséről gondoskodnak.
Ahhoz, hogy a Form-on lévő egyetlen nyomógomb Click eseménye akkor is létrejöjjön, ha a felhasználó nem egérrel kattint rajta, hanem a TextBox-on állva egy enter-t nyom, szükséges regisztrálnunk ezt a gombot a RegisterRequiresRaiseEvent függvény segítségével.
    private void Page_Load(object sender, System.EventArgs e)
    {
      RegisterRequiresRaiseEvent(Button1);
      if (!IsPostBack)
      {
        LoadData();
        SetData();
      }
    }
Amikor a felhasználó új adatot ad meg, akkor jön létre a Button1 gomb Click eseménye. Itt ismét a LoadData függvényt hívjuk meg, mely elvégzi a már esetlegesen tárolt adatok betöltését, illetve szükség esetén az adat tábla létrehozását.
Ezt követően létrehozunk egy tömböt, melynek első elemében tároljuk az aktuális időpontot, második elemében pedig a TextBox-ban megadott adatot.
    private void Button1_Click(object sender, System.EventArgs e)
    {
      LoadData();
      object[] o = new object[2];
      o[0] = DateTime.Now;
      o[1] = TextBox1.Text;
A tömb feltöltése után az adattáblához hozzáadjuk az új sort.
      dt.Rows.Add(o);
Ezt követően tároljuk az adattáblát a Session kollekcióban SessionData néven. A Session kollekció biztosítja azt, hogy a benne tárolt adat az adott kliens folyamatához kötődik, így más kliensek adatával nem keveredik össze, vagyis ahány böngészőbe kerül betöltésre az alkalmazásunk, annyi példában tárolódik a SessionData nevű adattáblánk.
      Session["SessionData"] = dt;
Végezetül a SetData függvényt hívjuk, mely a DataGrid-hez köti az adattábla adatait.
      SetData();
    }
Nézzük most a már többször is használt LoadData függvényt. Itt első lépésben megpróbáljuk a Session kollekcióból kiolvasni az adattáblánkat, amennyiben null értéket kapunk vissza, így az az eset áll fenn, hogy alkalmazásunk most fut először és még nem lett megadva adat.
    private void LoadData()
    {
      dt = (DataTable)Session["SessionData"];
      if (dt == null)
      {
Ez esetben létre kell hoznunk egy új adattáblát, és megadni annak szerkezetét.
        dt = new DataTable();            
        dt.Columns.Add("DataTime", Type.GetType("System.DateTime"));
        dt.Columns.Add("Data", Type.GetType("System.String"));
      }
    }
A SetData függvényben nincs más teendőnk mint az adattáblánkat a WebForm-on lévő DataGridhez kötni.
    private void SetData()
    {
      DataGrid1.DataSource = dt.DefaultView;
      DataGrid1.DataBind();
    }

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