C# / apsx.net - динамически созданная кнопка не работает
Вот моя проблема: я динамически создал несколько кнопок на своей странице (в методе Page_PreInit), все они связаны с одним и тем же обработчиком событий. Но эти кнопки не запускают событие, когда я нажимаю на них... Кто-нибудь может мне помочь?
Вот часть моего кода:
Создание кнопки (в цикле foreach в методе 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
}
4 ответа
Хорошо, я решил свою проблему.
Идентификаторы кнопок содержали некоторые символы "\". Я только что удалил эти '\', и все работает отлично.
Спасибо всем за ваш ответ!
Динамические элементы управления должны быть добавлены во время Page PreInit или Init, а не при загрузке. Это из-за жизненного цикла страницы и загрузки viewstate... так что попробуйте сначала, чтобы увидеть, решит ли это проблему.
Кроме того, я считаю, что я прочитал, что лучше заказать ваш код таким образом:
Button b = new Button();
field.Controls.Add(b);
b.Text = "Download";
b.ID = tmp_out[type] as String;
b.Click += new EventHandler(Download_Click);
Сначала добавьте элемент управления во внутреннюю коллекцию, затем измените его свойства.
Не должно быть так?
...
b.Click += new EventHandler(Download_Command);
...
private void Download_Command(object sender, EventArgs e)
{
//doing some stuff
}
Ваш оператор обработчика событий
b.Click += new EventHandler(Download_Click);
но твой метод
private void Download_Command(object sender, CommandEventArgs e)
Вы уверены, что это правильный метод для запуска?