2016-03-22 34 views
3

Mein Problem ist, dass ich dynamisch eine Tabelle erstellen, in der jede Zelle eine Verknüpfungsschaltfläche enthält, die beim Klicken diese Zelle aus der Tabelle entfernen soll. (Es ist ein bisschen komplexer als das, aber ich werde nicht in diese Details gehen, nur sagen, dass ein Workaround nicht tun wird) Ich habe ein paar Post darüber gelesen und es wird in der Regel erwähnt, dass die Kontrolle auch sein muss in Seitenladung oder vorher gemacht. Ich habe versucht, die Methode auszuführen, die setCellContent von Seite laden und Seiteninitialisierung und Pre-Init ausführt, aber die _lnkBntRemoveSlotFromTable_Click-Methode wird nie aufgerufen, während die Linkschaltflächen geklickt werden. Und ich beginne mich zu fragen, ob etwas anderes falsch ist, als wenn die Steuerelemente erstellt/neu erstellt werden.Dynamisch erstellte Verknüpfungsschaltfläche in C#

public void _lnkBntRemoveSlotFromTable_Click(object sender, CommandEventArgs e) 
{ 
    //1. Make changes to the table 
} 

Aber die Methode nie aufgerufen:

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

Die Methode, die ich genannt werden will:

die Tabelle für jede Zelle besteht, ist es das, was getan wird.

+0

Und die Tabelle selbst wird auf jedem Postback neu erstellt? – ConnorsFan

+0

Ja. Die Tabelle und alle Linkbuttons werden so erstellt, wie sie sollten. –

+0

Nach dem Klicken auf einen LinkButton, verschwindet es? – ConnorsFan

Antwort

1

Endlich hat es funktioniert. Ein paar Änderungen haben es funktioniert. Es hatte natürlich damit zu tun, wann der Tisch erstellt wurde und wie die ID erstellt wurde. Für Ratschläge für andere ist hier ein Beispiel dafür, wann es funktioniert. Und stellen Sie sicher, dass die ID des dynamischen Steuerelements beim Laden der Seite gleich bleibt.

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) 
     { 

     } 

    } 
Verwandte Themen