protected virtual void CreateControlHierarchy (bool useDataSource)
{
IEnumerable ds;
items = new ArrayList ();
itemscol = null;
if (useDataSource) {
ds = GetData ();
}
else {
// Optimize (shouldn't need all this memory ;-)
ds = new object [(int) ViewState ["Items"]];
}
// If there is no datasource, then we don't show anything. the "Items"
// viewstate won't get set, so on postback, we won't get here
if (ds == null)
return;
if (HeaderTemplate != null)
DoItem (-1, ListItemType.Header, null, useDataSource);
int idx = 0;
foreach (object o in ds) {
if (idx != 0 && SeparatorTemplate != null)
DoItem (idx - 1, ListItemType.Separator, null, useDataSource);
DoItem (idx, idx % 2 == 0 ? ListItemType.Item : ListItemType.AlternatingItem, o, useDataSource);
idx ++;
}
if (FooterTemplate != null)
DoItem (-1, ListItemType.Footer, null, useDataSource);
ViewState ["Items"] = idx;
}