Avatar billede davidfossil Nybegynder
03. oktober 2004 - 22:09 Der er 10 kommentarer og
1 løsning

Kan man sætte "OnClick" for en LinkButton dynamisk?

Jeg har forsøgt dette, men det virker i hvert fald ikke :o)
Er der nogen der ved om det overhovedet kan lade sig gøre?

LinkButton linkButton = new LinkButton();
linkButton.Text = "Klik her";
linkButton.CommandName = "minMetode";
paragraph.Controls.Add(linkButton);
Avatar billede snepnet Nybegynder
03. oktober 2004 - 22:17 #1
er det et javascript onclick du vil sætte ind, eller er det en servidehandler du vil have eksekveret ved klik ?
Avatar billede snepnet Nybegynder
03. oktober 2004 - 22:19 #2
serverside-klikket kan du abbonere på på denne måde :

linkButton.Click += new System.EventHandler(this.linkButton_Click);

// og handleren bliver så som følger :
private void linkButton_Click(object sender, EventArgs e)
{
  //
}
Avatar billede snepnet Nybegynder
03. oktober 2004 - 22:20 #3
hvis det er clientside du ønsker der skal ske noget kan du gøre sådan her :

linkButton.Attributes.Add("onclick","someScriptFunction();");
Avatar billede snepnet Nybegynder
03. oktober 2004 - 22:45 #4
tror jeg vover et svar på den egentlig, men du må sige til hvis jeg kan gøre andet her ok ?
mvh
Avatar billede davidfossil Nybegynder
04. oktober 2004 - 12:17 #5
det er serverside jeg vil lave, men er det muligt at lave det ud fra en string variable?
jeg ved godt det lyder rimelig kogt, men jeg vil gerne kunne vælge hvilken metode der skal kaldes onclick, ved at definere metodens navn i en variabel :o)
Avatar billede snepnet Nybegynder
04. oktober 2004 - 13:14 #6
Det er det du gør her :
linkButton.Click += new System.EventHandler(this.linkButton_Click);

Der står at det er linkButton_Click du får kaldt, og den metode skal så overholde en signatur definere ved en delegate (jeg kan godt uddybe det), men signaturen angiver ved det specifikke event du gerne vil håndtere, at de viste den skal tage de viste parametre - altså object sender, og EventArgs e.

du kan så altid i den metode kalde en anden, og du kan også lave en switch på dit CommandName eller CommandArgument, så det bliver noget i denne stil :

// og handleren bliver så som følger :
private void linkButton_Click(object sender, EventArgs e)
{
  if(sender is LinkButton)
  {
    LinkButton lbtn = (LinkButton)sender;
    switch(lbtn.CommandName)
    {
        case : "etellerandet" :
          // kald specifik metode
          break;
        osv...
    }
  }
}

kan du følge det ?

mvh
Avatar billede davidfossil Nybegynder
05. oktober 2004 - 08:06 #7
Ok, det var ikke helt det jeg søgte, men det kan sagtens bruges :o)
Mange tak!
Avatar billede davidfossil Nybegynder
14. november 2004 - 17:28 #8
hej igen - håber du stadig er på linjen, for det virke sq ikke :(
jeg forsøger igen og igen, men når jeg klikker på en linkbutton hvor click er defineret dynamisk med en "new EventHandler" bliver den aldrig "affyret".

opretter jeg min linkbutton direkte i .ASPX filer ved at skrive <asp:LinkButton ... /> og her referere til samme metode i OnClick virker den fint.

jeg er fuldstændig lost her - hvad præcist skal der skrives for at click handleren fungerer? jeg har sat både en CommandName og en CommandArgument på også, men det hjælper ikke...

håber du kan hjælpe - du kan sagtens få points, opretter bare en ny tråd.
Avatar billede snepnet Nybegynder
14. november 2004 - 18:46 #9
Du kan prøve det her meget simple eksempel (der er ikke noget kode på aspx-siden... udover at formen har ID="Form1".

Mvh

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace EXP2
{
    public class DF2 : System.Web.UI.Page
    {
        protected HtmlForm Form1;

        private void Page_Load(object sender, System.EventArgs e)
        {
            LinkButton lbtn = new LinkButton();
            lbtn.Text = "TESTKNAP";
            lbtn.CommandName = "TEST";
            lbtn.Click += new EventHandler(lbtn_Click);
            Form1.Controls.Add(lbtn);
        }

        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }
       
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);
        }

        private void lbtn_Click(object sender, EventArgs e)
        {
            Response.Write(((LinkButton)sender).CommandName);
        }
    }
}
Avatar billede davidfossil Nybegynder
15. november 2004 - 14:29 #10
dit eksempel kørte uden problemer, og tvang mig på den måde til at finde min egen fejl :o)
det er også lykkedes, og det kører som det skal nu.

mange tak for hjælpen!
sig til hvis du vil have points.
Avatar billede snepnet Nybegynder
15. november 2004 - 18:41 #11
alletiders - tak for point :o)
mvh
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