Вы можете создать другой конструктор в элементе управления, который получит требуемое свойство, использовать его в событии load, а затем передать его в текущий пустой массив объектов в вызове LoadControl ().
Другой подход состоит в том, чтобы запустить логику в установщике свойства, а не в событии Load элемента управления, поскольку это, по сути, реальная загрузка здесь и запускается один раз за запрос для каждого элемента управления, если я правильно понял.
Другой подход - не загружать его динамически, как все.
внутри шаблона элемента вы можете иметь что-то вроде:
<uc:MyControl runat="server
ChildItems='<%# ((MyClass) Container.DataItem).Children %>'
Visible='<%# ((MyClass) Container.DataItem).Children.Length > 0 %>'
/>
Обновление
Еще один подход, который никогда не давал мне ошибок с дочерними элементами управления в пользовательских элементах управления внутри ретрансляторов или в жизненном цикле страницы, заключается в использовании события Связанные данные элемента вместо Созданного элемента.
На самом деле, когда я думаю об этом сейчас, ваш код не должен этого делать, потому что e.Item.DataItem еще не был связан с ним.
Попробуйте изменить событие на ItemDataBound и посмотреть, работает ли оно.
.
Я все же рекомендую вам включить элемент управления в разметку элемента и контролировать видимость элемента управления в событии (теперь это ItemDataBound). Вы можете ссылаться на элемент управления, например, e.Item.FindControl("ControlId") as MyControl
(вернет ноль, если не найден в текущем элементе).
Попробуйте объединить оба или, по крайней мере, изменить событие на привязанную к данным вместо созданной, и давайте посмотрим ...