Avatar billede teleskop Nybegynder
01. februar 2008 - 14:58 Der er 8 kommentarer og
1 løsning

Fang hvilken knap der er trykket på i PageLoad

Hej

Er det muligt at fange hvilken knap som der er trykket på i PageLoad evenet?

på forhånd tak
Avatar billede jokkejensen Novice
01. februar 2008 - 15:10 #1
Det lyder lidt som du er fløjet fra classic asp, eller php til asp.net. hvis dette er tilfældet er der bedre måder at bearbejde events end at lade dem alle ramme Page_Load metoden.

Men sådan her fanger du ex. ID på knappen der er kørt..

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            Button btn = new Button();
            btn = (Button)sender;
            Response.Write(btn.ID);
        }
        catch(Exception exp){}
    }
Avatar billede jokkejensen Novice
01. februar 2008 - 15:13 #2
<asp:Button runat="server" ID="button1" OnClick="Page_Load" />
Avatar billede teleskop Nybegynder
01. februar 2008 - 15:21 #3
Super tak skal du have

Mit problem er at jeg skal opdatere et updatepanel og en repeater når knappen er trykket ...og der bliver knappens clickevent eksekveret forsent.

Men jeg vil meget gerne høre hvis du har en anden ide.

og så lige husk at smid et svar : )
Avatar billede jokkejensen Novice
01. februar 2008 - 15:34 #4
yeah..

Du tester bare i din Page_Load om det er et postback eller om det er et nyt request.

if(!Page.IsPostBack)
{
//køres kun første gang aspx filen vises, eller du laver et Server.Redirect(".")
}
else
{
//køres ved postback's.. klik på knapper, onselectedindexchanged på dropdowns osv.
}

Det er så vigtigt at du gemmer de ting du kun vil have kørt "On Page_Load" og ikke "On Page Postback"..

Håber du forstår.

/JJ
Avatar billede teleskop Nybegynder
01. februar 2008 - 15:48 #5
Jep det er jeg sådan set med på, men jeg har 3 forskellige knapper som brugeren kan trykke på på siden og derfor er jeg nødt til at fange hvilken knap det er brugeren har trykket på.

if(!Page.IsPostBack)
{
//køres kun første gang aspx filen vises, eller du laver et Server.Redirect(".")
}
else
{
//køres ved postback's.. klik på knapper, onselectedindexchanged på dropdowns osv.
    if(Knap 1 er trykket )
         
    if(Knap 2 er trykket )

    if(Knap 3 er trykket )

}


Men så er jeg da nødt til at bruge din metoden ovenover ikk?
Avatar billede jokkejensen Novice
06. februar 2008 - 13:21 #6
Nope..

Du pakker bare alt dit kode ind i if(!Page.IsPostBack)

Så afvikles det kun første gang siden renderes.

Når en bruger trykker på en knappe, så køres page_load ikke.

Så kan du skrive funktioner til dine knapper, og de vil afvikles først.

<asp:button onclick="btn_click" runat="server" text="do it" />

protected void btn_click(object o, EventArgs e)
{


// her kan du altid køre pageload i if(!Page.IsPostBack) med : Response.Redirect til samme side.
}
Avatar billede jokkejensen Novice
06. februar 2008 - 13:23 #7
hvis du ikke skriver Response.Redirect vil alt fra Page_Load som ikke står i if statementen afvikles.

Så man skal "omhyggeligt" ligge sin databinds osv i den if sætning. Ellers vil alle dine kontroller returnere deres "onload" værdi.

/JJ
Avatar billede teleskop Nybegynder
06. februar 2008 - 17:37 #8
fuck hvor har du ret.

En åbenbaring : )

Thanks
Avatar billede jokkejensen Novice
07. februar 2008 - 09:25 #9
np :)
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