|
|
ASP-s események
- Gábor -
|
|
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:
,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)  |
| |
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: , 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!
|
|