2016-08-18 3 views
1

Je crée dynamiquement un lien linkButton sur ASP.net. J'ai besoin d'aide lorsque je clique sur le bouton linkButton, il va stocker le nom du linkbutton sur mon Label1 (par exemple seulement).Méthode LinkButton.OnClick avec le paramètre

Voici le code:

protected void Page_Load(object sender, EventArgs e) 
    { 
     for (int ctr = 0; ctr <= 2; ctr++) 
     { 
      LinkButton link = new LinkButton(); 
      link.ID = "lnk" + ctr.ToString(); 
      link.Text = "lnkName" + ctr.ToString(); 
      link.Click += new EventHandler(DynamicClick); 
      this.form1.Controls.Add(link); 
     } 
    } 

//when I click the buttonLink 
public void DynamicClick(object sender, EventArgs e) 
    { 
     //label1.text will get the .text of the button that i pressed 
     Label1.Text = ""; 
    } 

Répondre

2

je le ferais de cette façon

public void DynamicClick(object sender, EventArgs e) 
{ 
    LinkButton linkButton = sender as LinkButton; 
    if (linkButton != null) 
    { 
     Label1.Text = linkButton.Text; 
    } 
} 
+0

merci cela a fonctionné –

1
protected void Page_Load(object sender, EventArgs e) 
    { 
     for (int ctr = 0; ctr <= 2; ctr++) 
     { 
      LinkButton link = new LinkButton(); 
      link.ID = "lnk" + ctr.ToString(); 
      link.Text = "lnkName" + ctr.ToString(); 
      link.Click += delegate { Label1.Text = link.ID; }; 
      this.form1.Controls.Add(link); 
     } 

    } 
1

Je ferais cela avec une légère variation de la réponse de Valeh.

protected void Page_Load(object sender, EventArgs e) 
{ 
    for (int ctr = 0; ctr <= 2; ctr++) 
    { 
     LinkButton link = new LinkButton(); 
     link.ID = "lnk" + ctr.ToString(); 
     link.Text = "lnkName" + ctr.ToString(); 
     link.Click += (s, ea) => 
     { 
      Label1.Text = link.Text; 
     }; 
     this.form1.Controls.Add(link); 
    } 
} 

Création d'une méthode distincte public void DynamicClick(object sender, EventArgs e) - en particulier celui qui est public - est une mauvaise chose quand il ne faut pas que ça casse l'encapsulation. C'est parfaitement compréhensible de le faire quand on travaille avec un designer, mais quand on écrit le code nous-mêmes, c'est une mauvaise idée.