2017-06-07 9 views
0

Ich versuche, LinkButtons Steuerelemente dynamisch einer anderen Schaltfläche zu erstellen, d. H. Nach dem Laden der Seite. Zum Beispiel: Ich habe eine Schaltfläche mit dem Namen Add Controls, deren Funktion es ist, Link Buttons dynamisch hinzuzufügen, und einen Event Handler für all diese dynamischen Link Buttons anzuhängen. Aber leider werden für mich die Ereignisse nicht ausgelöst. Das Folgende ist das Stück Code, an dem ich gearbeitet habe.LinkButton onclick -Ereignis triggert nicht für dynamisch erstellte Schaltflächen C#

Angenommen DomainList.Items ist eine Sammlung von fünf Elementen.

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

Der folgende Code ist mein Seitenladecode.

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

    } 

Das Ereignis deleteDomain_Click wurde nicht ausgelöst. Ich möchte, dass das Click-Ereignis ausgelöst wird.

+0

Mögliche Duplikat [asp.net dynamisch Schaltfläche mit Event-Handler] (https://stackoverflow.com/questions/7713242/asp-net-dynamically-button-with-event- Handler) –

+0

können Sie bitte Ihre page_load Ereigniscode –

+0

@ArsalanQaiser bitte überprüfen Sie oben. –

Antwort

1

Wenn das Click-Ereignis ausgelöst wird, tritt eine Rückübertragung auf, sodass sie erneut erstellt und dem Ereignishandler hinzugefügt werden.

Der beste Ort zum Erstellen (und Neuerstellen) von dynamischen Steuerelementen ist der Ereignishandler page_load oder page_init.

versuchen, dieses

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