2016-08-18 28 views
1

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

回答

2

我會做那樣的

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

我會略有變化,以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 - 是一件壞事,當它是沒有必要的,因爲它打破了封裝。當我們與設計師合作時,這樣做是完全可以理解的,但是當我們自己編寫代碼時,這是一個糟糕的主意。