LinkBut​​ton onclick事件未触发动态创建的按钮C# [英] LinkButton onclick event is not triggering for dynamically created buttons c#

查看:64
本文介绍了LinkBut​​ton onclick事件未触发动态创建的按钮C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试动态创建另一个按钮的 LinkBut​​tons 控件 OnClick ,即在页面加载后.例如:我有一个名为添加控件"的按钮,该功能是动态添加链接按钮",并为所有动态创建链接按钮"附加事件处理程序.但是对我来说不幸的是事件没有被触发.下面是我编写的代码.

I'm trying to create LinkButtons controls dynamically OnClick of another button i.e after the page load. For example: I have a button called Add Controls which functionality is to add Link Buttons dynamically, and attach an event handler for all this dynamically create Link Buttons. But unfortunately for me the events are not be triggered. The below is the piece of code that I have worked on.

假设 DomainList.Items 是五个元素的集合.

Assume DomainList.Items is a collection of five elements.

protected void AddControls_Click(object sender, EventArgs e)
{
    foreach (ListItem item in DomainList.Items)
    {               
        LinkButton deleteDomain = new LinkButton();

        deleteDomain.Text = "Delete";
        deleteDomain.Click += new System.EventHandler(deleteDomain_Click);
        deleteDomain.ClientIDMode = ClientIDMode.Static;
        deleteDomain.CommandArgument = item.Text;
        divEditDomainName.Controls.Add(deleteDomain);

    }
}

void deleteDomain_Click(object sender, EventArgs e)
{
    //Some Code;
}

以下是我的页面加载代码.

The below is my page load code.

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Label lblEvent = this.Master.FindControl("SpEvent") as Label;
            if (Session["eventname"] != null)
            {
                lblEvent.Text = Session["eventname"].ToString() + " " + "<i class='fa fa-angle-down'></i>";
            }
            Image imgEvent = this.Master.FindControl("ImageEvent") as Image;
            imgEvent.ImageUrl = Convert.ToString(Session["ImageURL"]);
            lblCreateOrganization.Text = Convert.ToString(Session["eventname"]);

            BindOrganization();
            EditOrganizationID.Attributes.Add("readonly", "readonly");
        }

    }

deleteDomain_Click 事件未触发.我希望点击事件应被触发.

The deleteDomain_Click event is not been triggered. I want the click event should be triggered.

推荐答案

单击事件触发器时,将发生回发,因此它们将重新创建并再次附加到事件处理程序.

when Click event triggers, post back will occur so they recreated and attached to the event handler again.

创建(和重新创建)动态控件的最佳位置是在page_load或page_init事件处理程序中.

The best place to create (and re-create) dynamic controls is in the page_load or page_init event handler.

尝试

    public bool AddControlsClicked
    {
        get
        {
            return Convert.ToBoolean(ViewState["AddControlsClicked"]);
        }
        set
        {
            ViewState["AddControlsClicked"] = value;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if(AddControlsClicked)
        {
            for (int i = 0; i < 5; i++)
            {
                LinkButton deleteDomain = new LinkButton();

                deleteDomain.Text = "Delete";
                deleteDomain.Click += new System.EventHandler(deleteDomain_Click);
                //deleteDomain.ClientIDMode = ClientIDMode.Static;
                //deleteDomain.CommandArgument = item.Text;
                divEditDomainName.Controls.Add(deleteDomain);
            }
        }
    }

    void deleteDomain_Click(object sender, EventArgs e)
    {
        //Some Code;
    }

    protected void AddControls_Click(object sender, EventArgs e)
    {
        AddControlsClicked = true;
        Page_Load(sender, e);
    }

这篇关于LinkBut​​ton onclick事件未触发动态创建的按钮C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆