我的问题是我动态创建一个表,其中每个单元格都包含一个链接按钮,单击时应该从表中删除该单元格。 (这比我复杂一点,但我不会详细说明,只是说解决方法不会这样做)我已经阅读了一些关于此的帖子,通常会提到控件也是(重新)制作的在页面加载或之前。我试图运行从页面加载和页面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
}
但是从不调用该方法。
答案 0 :(得分:1)
终于搞定了。一些变化使它工作。它与表创建时以及如何创建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)
{
}
}