带参数的LinkButton.OnClick方法
问题描述:
我在ASP.net上动态创建linkButton。当我点击linkButton时,我需要帮助,它会将linkbutton名称存储到我的Label1(仅用于示例)。带参数的LinkButton.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;
}
}
答
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
- 是一件坏事,当它是没有必要的,因为它打破了封装。当我们与设计师合作时,这样做是完全可以理解的,但是当我们自己编写代码时,这是一个糟糕的主意。
感谢它的工作 –