Avatar billede spyrodrag Nybegynder
02. august 2007 - 09:39 Der er 9 kommentarer og
1 løsning

Button click køres først efter Page_Load

Jeg har en side med en knap på, når jeg trykker på den, så køres funktionen Page_Load før min event handler til knappen. Kan jeg sikre mig at knappens event handler bliver kørt først?

Hvad gør man almindeligvis for at løse dette?

På forhånd tak!
Avatar billede kalp Novice
02. august 2007 - 09:41 #1
Det er også meningen at page load først skal køres da din control skal genereres igen!!
Avatar billede kalp Novice
02. august 2007 - 09:42 #2
hvis det er fordi du har noget bestemt kode som ikke skal afvikles ved post back så skriver det

if(!IsPostBack)
{
din kode her
}

så afvikles koden ikke ved reload af siden.
Avatar billede spyrodrag Nybegynder
02. august 2007 - 09:45 #3
Jeg har en aspx side med to ascx filer.

Når jeg vælger login i den første brugerkontrol, så kunne jeg godt tænke mig at jeg kunne tjekke på Session["id"] i den anden brugerkontrol. Problemet er jo bare at Session["id"] først bliver sat, når event funktionen er blevet kørt.

Her er koden:

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["id"] != null)
            {
                Label deleteLbl = null;
                foreach (Control c in this.Controls)
                {
                    if (!(c is Label))
                        continue;
                    Label lbl = (Label)c;
                    if (lbl.CssClass == "error")
                    {
                        deleteLbl = lbl;
                        break;
                    }
                }
                this.Controls.Remove(deleteLbl);

                bruger.Text = Session["firstname"] + " : " + Session["companyName"];
            }
            else
            {
                Panel1.Visible = false;
                Label lbl = new Label();
                lbl.Text = "Login i toppen af siden...";
                lbl.CssClass = "error";
                this.Controls.Add(lbl);
            }
        }
Avatar billede kalp Novice
02. august 2007 - 09:53 #4
du sætter session i den første aspx side.

derfor burde koden i den anden fungere fint
Avatar billede spyrodrag Nybegynder
02. august 2007 - 10:04 #5
Session bliver først sat når man klikker på knappen, det er her problemet opstår.

Her er koden for login brugerkontrollen:

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["id"] != null)
            {
                Panel1.Controls.Clear();
                Label lbl = new Label();
                lbl.Text = "Velkommen, " + Session["firstname"];
                Panel1.Controls.Add(lbl);
            }
        }

        protected void btnLogin_Click(object sender, EventArgs e)
        {
            OleDbCommand cmd = Database.CreateCommand();
            cmd.CommandText = "SELECT * FROM [User] WHERE (username = '" + username.Text + "' AND password = '" + password.Text + "')";
            OleDbDataReader reader = cmd.ExecuteReader();

            if (reader.Read())
            {
                Session["id"] = reader["id"];
                Session["firstname"] = reader["firstname"];
                Session["companyName"] = reader["companyName"];

                Panel1.Controls.Clear();
                Label lbl = new Label();
                lbl.Text = "Velkommen, " + Session["firstname"];
                Panel1.Controls.Add(lbl);
            }
        }
Avatar billede kalp Novice
02. august 2007 - 10:10 #6
okay samme side altså..

du kunne evt. fra knappen redirekte til "dig selv".


  protected void btnLogin_Click(object sender, EventArgs e)
        {
            OleDbCommand cmd = Database.CreateCommand();
            cmd.CommandText = "SELECT * FROM [User] WHERE (username = '" + username.Text + "' AND password = '" + password.Text + "')";
            OleDbDataReader reader = cmd.ExecuteReader();

            if (reader.Read())
            {
                Session["id"] = reader["id"];
                Session["firstname"] = reader["firstname"];
                Session["companyName"] = reader["companyName"];
                Response.Redirect(Request.Url);
            }
        }
Avatar billede spyrodrag Nybegynder
02. august 2007 - 10:14 #7
Er det den "rigtige" måde at gøre det på? ...Altså at redirecte til dig selv.
Avatar billede kalp Novice
02. august 2007 - 10:16 #8
det er ikke forkert....

men ifølge .NET er den rigtige måde, at benytte deres indbyggede loginsystem:P

men den er rigtig nok.. normalt ville du jo redirekte til en anden side..
du har valgt at have 1 side kun så derfor skal du redirekte til dig selv.
Avatar billede spyrodrag Nybegynder
02. august 2007 - 10:22 #9
Hehe, tak for hjælpen, jeg vidst ikke at der var et indbygget login system, det tager jeg et kig på engang når jeg ikke har en deadline jeg skal holde ;-) vil du være venlig at smide et svar?
Avatar billede kalp Novice
02. august 2007 - 10:25 #10
det får du her:)
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