2015-04-22 5 views
1

У меня есть следующий код, который динамически создает кнопку изображения в теге li html. Когда я нажимаю кнопку изображения, она не запускает событие. Что я делаю неправильно?Командное событие не запускает asp.net для динамически созданного элемента управления

код, который генерирует контроль:

ImageButton cmdEdit = new ImageButton(); 
cmdEdit.ImageUrl = "~/Images/phone_book_edit.png"; 
cmdEdit.ID = "cmdEdit" + recordcount.ToString(); 
cmdEdit.Attributes["class"] = "liQuestionsLabel2"; 
cmdEdit.Width = 30; 
cmdEdit.CommandName = "Edit"; 
cmdEdit.CommandArgument = (recordcount - 1).ToString(); 
cmdEdit.Command += new CommandEventHandler(EditQuestion_Command); 
li.Controls.Add(cmdEdit); 

Код события:

protected void EditQuestion_Command(object sender, CommandEventArgs e) 
{ 
    Response.Write("here"); 
} 
+0

Что такое 'li' в' li.Controls.Add (cmdEdit); ' –

+1

, вы должны добавить свои динамические элементы управления снова в li при каждой обратной передаче. поэтому, если вы разместили код contol generation внутри! Page.IsPostback, тогда переместите его за пределы условия – Sandeep

ответ

4

Динамически генерируемые элементы управления теряют свое состояние после того, как они оказываются. Чтобы вы могли получить к ним доступ снова после обратной передачи, вам придется воссоздать их в коде, а также воссоздать связанные события.

Поместите вышеуказанный код в Page_Load, но не внутри if(!IsPostback), чтобы он воссоздавался, и вы можете получить доступ к его событию.

Кроме этого, приведенный выше код отлично подходит для меня, когда я воссоздал тот же элемент управления на своей странице.

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