2016-08-18 8 views
1

私はlink.netをASP.netに動的に作成しています。 linkBut​​tonをクリックすると、リンクボタン名がLabel1に保存されます(例としてのみ)。ここでLinkBut​​ton.OnClickメソッドとパラメータ

は、コードは次のとおりです。

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 = ""; 
    } 

答えて

2

私はValehの答えにわずかな変化でこれを行うだろうそのように

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

ありがとう –

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

それを行うだろう。 public、特に1 - - 別の方法public void DynamicClick(object sender, EventArgs e)を作成

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); 
    } 
} 

は、それがカプセル化を壊して、それが必要ないときに悪いことです。デザイナーと作業しているときにはそうするのは完全に理解できますが、コードを自分で作成しているときは悪い考えです。

関連する問題