2016-03-22 3 views
3

Моя проблема заключается в том, что я динамически создаю таблицу, в которой каждая ячейка содержит ссылку, которая при щелчке должна удалить эту ячейку из таблицы. (Это я немного сложнее, чем это, но я не буду вдаваться в эти детали, просто говорю, что обходное решение не будет делать). Я прочитал несколько сообщений об этом, и обычно упоминается, что элемент управления тоже (re) сделанные при загрузке страницы или раньше. Я попытался запустить метод, который запускает setCellContent как из загрузки страницы, так и для init и init, но метод _lnkBntRemoveSlotFromTable_Click никогда не вызывается при нажатии на кнопки ссылок. И я начинаю удивляться, что есть что-то еще неправильное, чем когда создаются/воссоздаются элементы управления.Динамически созданная linkbutton в C#

Для каждой ячейки таблицы состоят из, это то, что делается:

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

Метод, который я хочу назвать:

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

Но метод никогда не вызывается.

+0

И сам стол воссоздается на каждой обратной передаче? – ConnorsFan

+0

Да. Таблица и все кнопки ссылок создаются так, как должны. –

+0

После нажатия на ссылку, она исчезает? – ConnorsFan

ответ

1

Наконец-то он работает. Несколько изменений заставили его работать. Это, конечно же, имело место, когда была создана таблица и как был создан идентификатор. Для советов для других здесь приведен пример того, когда это работает. И удостоверьтесь, что идентификатор динамического элемента управления остается неизменным на всех страницах.

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

     } 

    } 
Смежные вопросы