Добрый День.
Хотел задать вопрос касательно темы «динамическое создание контролов».
Все что нашел, перечитал, ответа не нашел. Потому и поднимаю эту тему вновь.
На форме Button, при нажатии срабатывает Event:
protected void Button1_Click(object sender, EventArgs e)
{
DataSet ds = ...
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
ImageButton ImgBut = new ImageButton();
ImgBut.ImageUrl = "images/bullets.png";
ImgBut.AlternateText = i;
ImgBut.Click += new ImageClickEventHandler(ImgBut_Click);
PlaceHolderConcl.Controls.Add(ImgBut);
}
}
Количество элементов может быть более 1000.
После этого определяю ImgBut_Click:
public void ImgBut_Click(object sender, ImageClickEventArgs e)
{
DataSet ds = ... SELECT ... WHERE id="+((ImageButton)sender).AlternateText);
DetailsView dv = new DetailsView();
dv.DataSource = ds;
dv.DataBind();
PlaceHolderConcl.Controls.Add(dv);
}
Естественно в сокращенном варианте. PlaceHolder на форме присутствует.
Вопрос все тот же. Как отловить событие onclick.
Тебе нужно добавлять свои кнопки на страницу всегда, т.к. после постбека они заново не создаются!
> то есть фактичеки ответ: "не существуют методы решения данной задачи при которых происходил вызов данного события"?
безвыходных ситуаций не бывает.
1) пишем процедуру, которая создает нужные контролы и ставит куда-то признак (например, во вьюстейт), что контролы были созданы динамически
2) в Page_Load этот признак проверяется и при нужде вызывается эта процедура
3) когда надо убрать динамически созданные контролы этот флаг сбрасывается и при след постбеке их не будет.
Posted via RSDN NNTP Server 1.9