gpt4 book ai didi

c# - 在 C# 中动态创建链接按钮

转载 作者:行者123 更新时间:2023-11-30 17:38:57 27 4
gpt4 key购买 nike

我的问题是我动态创建了一个表,其中每个单元格都包含一个链接按钮,单击该链接按钮时应该从表中删除该单元格。(我比那复杂一点,但我不会详细介绍这些细节,只是说解决方法不会做)我已经阅读了一些关于此的帖子,通常提到控件也已(重新)制作在页面加载或之前。我试图运行从页面加载和页面初始化和预初始化运行 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)
{

}

}

关于c# - 在 C# 中动态创建链接按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36166221/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com