2013-03-28 19 views
0

Вот моя проблема: я динамически создал несколько кнопок на моей странице (в методе Page_PreInit), все связанные с одним и тем же обработчиком событий. Но эти кнопки не срабатывают, когда я нажимаю на них ... Может кто-нибудь мне помочь?C#/apsx.net - Динамически созданная кнопка не работает

Вот некоторые из моего кода:

создания кнопки (на петле Еогеасп по методу Page_PreInit):

Button b = new Button(); 
field.Controls.Add(b); 

b.Text = "Download"; 
b.ID = tmp_out[type] as String; 
b.Click += new EventHandler(Download_Click); 

Метод OnClick:

private void Download_Click(object sender, EventArgs e) 
{ 
    //doing some stuff 
} 
+0

b.Click + = new EventHandler (Download_Click); но ваша подпись метода void Download_Command (object sender, CommandEventArgs e) – mdcuesta

+0

Извините, вставьте неправильный метод, отредактированное сообщение –

ответ

0

Хорошо, я решил свою проблему.

Иды кнопок содержали некоторые «\». Я просто удалил их, и все работает отлично.

Спасибо всем за ваш ответ!

1

Динамические элементы управления должны быть добавляется во время PreInit или Init, а не при загрузке. Это связано с загрузкой жизненного цикла страницы и загрузкой в ​​виде списка ... поэтому сначала попробуйте, чтобы решить, разрешает ли эта проблема.

Кроме того, я считаю, что я прочитал, что лучше заказать ваш код таким образом:

Button b = new Button(); 
field.Controls.Add(b); 

b.Text = "Download"; 
b.ID = tmp_out[type] as String; 
b.Click += new EventHandler(Download_Click); 

Добавление элемента управления первым к внутренней коллекции, а затем меняя его свойства.

+0

Хорошо спасибо, я попробую, и я дам вам знать, если это исправить мою проблему. –

+0

Так что я пытаюсь добавить свой код в метод PreInit, но у меня есть некоторые проблемы ... Я создаю таблицу со многими кнопками, но так как я поместил свой код в метод PreInit, моя таблица создается дважды. И теперь мои кнопки делают что-то, они поднимают исполнение, говоря, что идентификаторы не уникальны (но при проверке с помощью firebug все являются разными: s) –

+0

Ну, я бы рекомендовал иметь статическую таблицу, добавив на страницу, а просто динамически строит строки. Это поможет решить эту проблему. –

0

ваше заявление обработчик событий

b.Click += new EventHandler(Download_Click); 

но ваш метод

private void Download_Command(object sender, CommandEventArgs e) 

вы уверены, что его правильный метод, чтобы быть вызвано?

+0

Извините, Вставлен неправильный метод, сообщение отредактировано –

0

Не должно быть?

... 
b.Click += new EventHandler(Download_Command); 
... 

private void Download_Command(object sender, EventArgs e) 
{ 
    //doing some stuff 
} 
+0

Извините, Вставлен неправильный метод, отредактировано сообщение –

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