Avatar billede chris535 Nybegynder
11. oktober 2007 - 22:18 Der er 9 kommentarer og
3 løsninger

event handler problem

Hej.

Gennem C# laver jeg en linkButton med id, tekst og en event hander og smider den på min side. problemet er bare at når jeg kører siden og trykker på knappen, bliver event handleren aldrig kaldt. 

Koden:

private void showLabelLogout()
    {
        Button lb = new Button();
        lb.ID = "lbID";
        lb.Text = "Logout";
        lb.Click += new EventHandler(lb_Click);
        Panel2.Controls.Add(lb);


    }

    void lb_Click(object sender, EventArgs e)
    {
        HttpCookie userCookie = Request.Cookies["ihfLogin"];
        Request.Cookies["ihfLogin"]["loggedIn"] = "false";// userCookie.["loggedIn"] = "false;";
        loggedIn = false;
        showLogin();
    }

Kan i se hvad problemet er?


På forhånd tak.

Chris
Avatar billede simsen Mester
11. oktober 2007 - 22:36 #1
Hejsa Chris,

Først foran void lb_Click skal der stå et eller andet - er det en copy/paste fejl?

Hvad har du i linien i html koden, der kalder lb_Click?

mvh
simsen :-)
Avatar billede sherlock Nybegynder
11. oktober 2007 - 22:36 #2
Du kalder det nok fra et forkert sted.

Fra M$:

"Note When you create dynamic controls on a Web Form, you must create the controls and add them to the controls collection in either the Page_Init event handler or the Page_Load event handler. Otherwise, the controls may not behave as expected."
Avatar billede chris535 Nybegynder
11. oktober 2007 - 22:47 #3
->Simsen
Jeg tror ikke jeg har noget i html koden, ihvert fald ikke noget jeg kan se. Jeg skaber først det link der kalder lb_click mens programmet kører. Så html koden skal vel komme fra de to linier:
lb.Click += new EventHandler(lb_Click);
Panel2.Controls.Add(lb);
Avatar billede chris535 Nybegynder
11. oktober 2007 - 22:47 #4
Glemte også lige at sige at det er på min masterpage... Ved ikke om det gør nogen forskel.
Avatar billede chris535 Nybegynder
11. oktober 2007 - 22:49 #5
->Sherlock
Hvordan tilføjer man til control collection?
Avatar billede neoman Novice
11. oktober 2007 - 22:49 #6
showLabelLogout() kan du kalde når som helst. Men, du skal kalde den igen senest i page_load efterfølgende, for ellers eksisterer den ikke (da den blev dynamisk tilføjet).

Når du klikker på knappen, så køres der en postback. Så kommer der en page load, og der skal knappen eksistere for at det event som kom med postback skal kunne finde knappen og dermed event handleren. Der er en længere smøre om det her: http://www.eksperten.dk/artikler/1103
Avatar billede neoman Novice
11. oktober 2007 - 22:52 #7
Du "tilføjer den" ved at genskabe den senest ved page load. Du skal blot huske på en eller anden måde at der belv trykket på knappen, og når page load kører efterfølgende, skal du blot kalde showLabelLogout igen i PageLoad handleren.
Avatar billede chris535 Nybegynder
11. oktober 2007 - 23:51 #8
takker neoman. Det virkede. Det var vist det samme sherlock skrev, så hvis jeg kan finde ud af det, kan i få 30 hver.
Smid et svar
Avatar billede sherlock Nybegynder
11. oktober 2007 - 23:55 #9
:)
Avatar billede neoman Novice
12. oktober 2007 - 00:03 #10
Æ{:-P
Avatar billede chris535 Nybegynder
12. oktober 2007 - 00:19 #11
jeg måtte desværre ikke give jer 30 hver. Kun 30 i alt
Avatar billede sherlock Nybegynder
12. oktober 2007 - 10:05 #12
NP. Point-tallet betyder ikke nær så meget som markeringen af at emnet er færdigt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester