[英]Dynamically created linkbutton in C#
我的问题是我动态创建一个表,其中每个单元格包含一个链接按钮,单击时应该从表中删除该单元格。 (这比我复杂一点,但我不会详细说明,只是说解决方法不会这样做)我已经阅读了一些关于此的帖子,通常会提到控件也是(重新)制作的在页面加载或之前。 我试图运行从页面加载和页面init和pre init运行setCellContent的方法,但是从未调用_lnkBntRemoveSlotFromTable_Click方法,因为单击了链接按钮。 而且我开始怀疑除了创建/重新创建控件之外还有其他错误。
对于表格所包含的每个单元格,这是做了什么:
private TableCell setCellContent(string day, DateTime timeOfDay){
TableCell newCell = new TableCell();
LinkButton lb = new LinkButton();
lb.ID = (++global_counter_id).ToString();
lb.Text = timeOfDay.ToShortTimeString();
lb.CommandArgument = timeOfDay.ToString();
lb.Command += new CommandEventHandler(_lnkBntRemoveSlotFromTable_Click);
newCell.Controls.Add(lb);
return newCell;
}
我想要调用的方法:
public void _lnkBntRemoveSlotFromTable_Click(object sender, CommandEventArgs e)
{
//1. Make changes to the table
}
但这种方法从未被调用过。
终于搞定了。 一些变化使它工作。 它与表创建时以及如何创建id有关。 对于其他人的建议,这里有一个工作原理的例子。并确保动态控件的ID在页面加载时保持不变。
public partial class _default : System.Web.UI.Page
{
static int i = 0;
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
LinkButton lb = new LinkButton();
lb.ID = "id";
lb.Text = "Click me";
lb.CommandArgument = "argument";
lb.Command += new CommandEventHandler(method_to_call);
this.Panel.Controls.Add(lb);
}
private void method_to_call(object sender, CommandEventArgs e)
{
i++;
this.Label.Text = i.ToString();
}
protected void Page_Load(object sender, EventArgs e)
{
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.