C# - PostBack eseményének kezelése web kontrolon belül

PostBack kezelése 3. rész

forráskód letöltése
Sorozatunk eddigi részeiben a postback-nél történő adatbeviteli kontrolok tartalmi változásával foglalkozunk. Van viszont arra is lehetőségünk, hogy maga a postback eseményét kezeljük, vagyis arról szerezzün c.ToString() + "°C"k tudomást kontrolunkon belül, hogy a felhasználó egy a kontrolon belüli nyomógombra kattintott.
Mellékelt példa megnyitása előtt szükséges egy PostBack03 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.
A megvalósítás két lépésből áll: az egyik, hogy a kontrolnál meg kell adnunk az IPostBackEventHandler interfészt:
      public class PostBackControl03: System.Web.UI.WebControls.WebControl, IPostBackEventHandler 
A másik teendőnk, hogy felhasználjuk a RaisePostBackEvent függvényt. Ez akkor kerül meghívásra, ha postback történik a kontrolban. Mellékelt példánkban most csak annyit teszünk, hogy egy globális változóba tároljuk az aktuális időpontot.
    public void RaisePostBackEvent(String eventArgument)
    {
      s = DateTime.Now.ToLongTimeString();
    }       
Ha tehát a felhasználó a kontrolban lévő gombra kattint, akkor jön létre az osztályunkban a RaisePostBackEvent függvény hívása. Amikor a Render függvény fut, akkor generáljuk a kontrol tartalmát, ahol felhasználjuk a RaisePostBackEvent-nél tárolt időpontot úgy, hogy ez lesz a nyomógombunk felirata.
    protected override void Render(HtmlTextWriter output)
    {
      Button b = new Button();
      b.ID = UniqueID;
      b.Text = s;
      b.Style.Add("left", "10");
      b.Style.Add("top", "40");
      b.Style.Add("position", "absolute");
      b.Width = 160;
      ...    
      RenderBeginTag(output);
      p.RenderControl(output);
      RenderEndTag(output);
    }
Mivel a nyomógombnál a Text tárolása nincs leprogramozva, így nem marad meg a régi érték. Ez akkor feltűnő, ha egy másik kontrol gombjára kattintunk és így eltűnik az előző kontrol gomb felirata. Mivel jelen példának a postback esemény kezelés bemutatás a célja, így most ezzel az adattárolással nem foglalkozunk.

PostBack kezelése cikksorozat