Я добавляю пользовательский элемент управления для каждой записи, загружаемой в считывателе данных, вот основной цикл:
while (dr.Read())
{
ImageSelect imgSel = new ImageSelect(dr["Name"].ToString());
myPanel.Controls.Add(imgSel);
}
Проблема в том, что на страницу не добавлены элементы управления, я проверяю вывод html, и есть моя панель, в которой ничего нет.
Я даже прошел через код в отладчике и убедился, что myPanel.Controls получает элемент управления, добавленный в каждый цикл, со счетчиком 6, без ошибок, но тогда они не отображаются на странице.
Я запустил приведенный выше код в событиях Page_Init и Page_Load, оба с тем же результатом.
РЕДАКТИРОВАТЬ: Итак, я переключился на использование LoadControl (".... ascx") для получения экземпляра элемента управления, который теперь работает. Но изначально я также передавал данные через конструктор элементов управления. Это все еще возможно или мне просто нужно установить их через get / sets?
РЕДАКТИРОВАТЬ 2: Спасибо Фредди за указание на то, что LoadControl имеет перегрузку, в которой вы МОЖЕТЕ передать параметры конструктора, см. принятый ответ.
РЕДАКТИРОВАТЬ 3: после попытки использовать этот метод как с конструктором, так и без него. Я обнаружил, что лучше просто использовать сеттеры для любых свойств, которые должен иметь элемент управления, а не пытаться использовать переданный массив объектов для моего конструктора.