简体   繁体   English

LinkBut​​ton onclick事件未触发动态创建的按钮C#

[英]LinkButton onclick event is not triggering for dynamically created buttons c#

I'm trying to create LinkButtons controls dynamically OnClick of another button ie after the page load. 我正在尝试动态创建另一个按钮(即页面加载后)的OnClick动态LinkButtons控件。 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. 以下是我编写的代码。

Assume DomainList.Items is a collection of five elements. 假设DomainList.Items是五个元素的集合。

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");
        }

    }

The deleteDomain_Click event is not been triggered. 未触发deleteDomain_Click事件。 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. 当Click事件触发时,将发生回发,因此它们将重新创建并再次附加到事件处理程序。

The best place to create (and re-create) dynamic controls is in the page_load or page_init event handler. 创建(和重新创建)动态控件的最佳位置是page_load或page_init事件处理程序。

try this 尝试这个

    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);
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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