2016-03-22 5 views
3

Sorunum, her hücrenin bir bağlantı düğmesi içerdiği, tıklatıldığında bu hücreyi tablodan kaldırması beklenen bir tabloyu dinamik olarak oluşturmamdır. (Ben bundan biraz daha karmaşıkım ama bu ayrıntılara girmeyeceğim, sadece bir geçici çözümün yapamayacağını söylüyorum) Bu konuda birkaç yazı okudum ve genellikle kontrolün de (yeniden) olduğu belirtiliyor sayfa yüklemesi veya daha önce yapılmış. Ben setCellContent hem sayfa yükleme ve sayfa init ve ön init çalışır yöntemi çalıştırmak için çalıştı ama linkleri tıklandığında _lnkBntRemoveSlotFromTable_Click yöntemi asla denir. Ve kontroller oluşturulduğunda/yeniden oluşturulduğunda yanlış bir şey olduğunu merak etmeye başlıyorum.Dinamik olarak oluşturulan bağlantı düğmesi C#

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

Ama yöntem asla denir:

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

istediğim yöntem çağrılacak: Tablo oluşan her bir hücre için

, bu nedir yapılır edilir.

+0

Ve tablonun kendisi her geri gönderimde yeniden oluşturulur? – ConnorsFan

+0

Evet. Tablo ve tüm linkbuttons olması gerektiği gibi oluşturulur. –

+0

LinkButton'u tıkladıktan sonra kayboluyor mu? – ConnorsFan

cevap

1

Nihayet işe yaradı. Birkaç değişiklik işe yaradı. Tablo oluşturulduğunda ve kimliğin nasıl oluşturulduğu ile ilgili olarak vardı. Diğerleri için tavsiye almak için, çalıştığı zamana bir örnektir. Ve dinamik kontrolün kimliğinin sayfa yükleri boyunca aynı kaldığından emin olun.

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

     } 

    }