繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM