Добавьте элементы управления в Page_Init
, а не в Page_Load
. [1]
Кроме того, вы делаете это не так, как следовало бы. Считайте этот код
//your collection of objects goes here. It might be something different than
//this, but basically a Dictionary<int, YourType> goes fine
public Dictionary<Int32, string> Ids
{
get { return (ViewState["ids"] ?? new Dictionary<Int32, string>()) as Dictionary<Int32, string>; }
set { ViewState["ids"] = new Dictionary<Int32, string>(); }
}
protected void Page_Init(object sender, EventArgs e)
{
//load the data using your DAO
Ids = new Dictionary<int, string>();
Ids.Add(1, "http://www.huddletogether.com/projects/lightbox2/images/image-2.jpg");
Ids.Add(2, "http://helios.gsfc.nasa.gov/image_euv_press.jpg");
foreach (var item in Ids)
{
ImageButton imb = new ImageButton()
{
ImageUrl = item.Value,
CommandArgument = item.Key.ToString(),
CommandName = "open"
};
imb.Click += new ImageClickEventHandler(imb_Click);
PH1.Controls.Add(imb);
}
}
void imb_Click(object sender, ImageClickEventArgs e)
{
Response.Write("You purchased " + Ids[int.Parse(((ImageButton)sender).CommandArgument)]);
}
[1] (CTRL + C / CTRL + V из другого вопроса, на который я ответил на прошлой неделе):
Все, что должно поддерживаться между циклами страниц, должно быть объявлено в Page_Init
, а не Page_Load
.
Вся инициализация, такая как добавление обработчиков событий и добавление элементов управления, должна быть добавлена во время инициализации, так как состояние сохраняется между циклами страницы. Обработка содержимого элементов управления и состояния представления должна выполняться в Load
.
Проверьте также http://msdn.microsoft.com/en-us/library/ms178472.aspx.
Init
Повышается после инициализации всех элементов управления и любого скина
Настройки были применены. Использовать этот
событие для чтения или инициализации управления
свойства.
.
Load
Страница вызывает метод события OnLoad
на странице, то рекурсивно делает
то же самое для каждого дочернего элемента управления, который
делает то же самое для каждого своего ребенка
контролирует до страницы и все
элементы управления загружены.
Используйте метод события OnLoad для установки
свойства в элементах управления и установить
соединения с базой данных.