protected override void OnPreRender(EventArgs e) {
base.OnPreRender(e);
// Dummy control to which we parent all the data item controls
Control containerControl = new Control();
IEnumerable dataItems = ViewData.Eval(Name) as IEnumerable;
bool hasData = false;
if (dataItems != null) {
int index = 0;
foreach (object dataItem in dataItems) {
hasData = true;
RepeaterItem repeaterItem = new RepeaterItem(index, dataItem) {
ViewData = new ViewDataDictionary(dataItem),
};
ItemTemplate.InstantiateIn(repeaterItem);
containerControl.Controls.Add(repeaterItem);
index++;
}
}
if (!hasData) {
// If there was no data, instantiate the EmptyDataTemplate
Control emptyDataContainer = new Control();
EmptyDataTemplate.InstantiateIn(emptyDataContainer);
containerControl.Controls.Add(emptyDataContainer);
}
Controls.Add(containerControl);
containerControl.DataBind();
}