Skip Navigation Links
 Tudástár cikkek 
 Konferenciaanyagok 
 Dokumentumok 
 NetAcademia Blog 

NetAcademia Blog

IE8 Accelerator Tudástár kereséshez   Kereső szolgáltatás Tudástár kereséshez
 


ASP-s események
- Gábor -

 Feliratkozás Rss feed 2009. 04. 29. 09:32
Sziasztok, lenne egy ASP-s kérdésem: azt tapasztalom, hogyha kódból hívok egy olyan metódust, amely egy asp-s kontrol beépített eseményéhez van kötve, akkor az eseménykezelőre mégsem kerül a vezérlés (pedig a postback megvolt). Például, ha ezt írom egy gombra kattintáshoz:

kód másolása
XYDropDownList.SelectedIndex++;


,akkor ezután automatikusan nem hívódik meg ez a metódus:

kód másolása
protected void XYDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
  ...;
}


Én ilyenkor azt szoktam csinálni, hogy meghívom direktbe így:

kód másolása
XYDropDownList_SelectedIndexChanged(null, null);


,de ez nem nagyon tetszik. És ha valahol elfelejtem meghívni, vagy feleslegesen hívom?! Van erre szakosabb megoldás?


Köszi szépen! Gábor

Re: ASP-s események Tocsi (2009. 04. 29. 11:47) Tocsi
  Hát ez ritka ronda :)
Na most az a kérdés, hogy mikor iratkozol fel rá? Lehet, hogy azután, hogy az események alapjául szolgáló vizsgálatokon már túl van.
Kapcsold be a lapon a trace-t, a Selected++ mellő írj egy trace.Write-ot és akkor látod.
 
Re: ASP-s események Gábor (2009. 04. 29. 16:27)
  A feliratkozást a designer-ben csinálom (dupla klikk a Properties ablakban), az a nagy kérdés, hogy az mikor realizálódik az oldal élatciklusában.

A SelectedIndex++-t így hívom:

kód másolása
protected void Button1_Click(object sender, EventArgs e)
{
    DropDownList1.SelectedIndex++;
    Trace.Write("Button1 Click DropDownList1.SelectedIndex++");
}


A traceüzenetet a Raise PostBackEvent-be írja ki.

Sajnos ettől még nem lettem okosabb...

Egyébként azt figyeltem meg, ha a user a felhasználói felületen, kézzel változtatja meg a kiválasztott elemet, akkor a következő postback-nél bekövetkezik a DropDownList_SelectedIndexChanged esemény, bármi is váltotta azt ki.

Mit kéne máshogy csinálnom?

Gábor
 
Re: ASP-s események nlui (2009. 05. 04. 10:42)
  Az események amelyek nem váltanak ki automtikus PostBack-et a szerver felé, azok bekövetkezése elhalasztásra kerül addig, amíg valamely kontrol hatásra a PostBack meg nem történik.

Az oldal életciklusában ezek az események a "RaisePostDataChangedEvent" ciklusban következnek be, ami megelőzi a "RaisePostbackEvent" ciklust.

A kettő között az a kölönbség, hogy az első ciklusban az elhalasztott események kerülnek végrehajtásra, míg a második ciklusban az az esemény ami tulajdonképpen kiváltotta a PostBack-et.

Ezért találtad úgy, hogy az események a következő PostBack során következnek be.

Amit tehetsz, hogy beállítod a kontrol AutoPostBack tulajdonságát TRUE-re, vagy AJAX eszközöket vetsz be.

Üdv:
Lajos
 
Re: ASP-s események Gábor (2009. 05. 05. 13:42)
  Ha egy Button_Click-hez ezt írom:
kód másolása
DropDownList1.SelectedIndex++;
, akkor akárhányszor kattinthatsz a gombra, a SelectedIndexChanged esemény sohasem következik be! Ez normális???

Gábor
 
Re: ASP-s események nlui (2009. 05. 05. 15:02)
  Ezt miből gondolod hogy nem következik be? A Click esemény során van PostBack, ott nem szükséges meghívni a SelectedIndexChanged metódust, be fog következni.

Ha a SelectedIndexChanged eseménybe beírod az alábbi kódot, a Button Click eeményét kiüríted, majd futtatod és megnyomod a gombot akkor megjelenik az aktuális idő a traceben.

kód másolása
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            Trace.Write(DateTime.Now.ToString());
        }


Íme:



Trace.JPG


Üdv:

Lajos
 

Bejelentkezve hozzá is szólhat

Cím: 1077 Budapest, Kéthly Anna tér 1.
Telefon: (06 1) 472-1214
Fax: (06 1) 472-1215
Nyitvatartás, ügyfélszolgálat: 830-1630
Regisztrációs szám: 01-0707-04
Fat akkreditációs lajstromszám: AL-1680
Írjon nekünk!
Tudástár PPT-k Dokumentumok Blog Próbatesztek