带参数的LinkBut​​ton.OnClick方法

问题描述:

我在ASP.net上动态创建linkBut​​ton。当我点击linkBut​​ton时,我需要帮助,它会将linkbutton名称存储到我的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 = ""; 
    } 

我会做那样的

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

感谢它的工作 –

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

    } 

我会略有变化,以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); 
    } 
} 

创建一个单独的方法public void DynamicClick(object sender, EventArgs e) - 尤指public - 是一件坏事,当它是没有必要的,因为它打破了封装。当我们与设计师合作时,这样做是完全可以理解的,但是当我们自己编写代码时,这是一个糟糕的主意。