private void CreateItem(object current, int i, bool doDatabind)
        {
            // create item
            RepeaterItem  item    = new RepeaterItem(i, current);
            InvisibleItem invItem = new InvisibleItem(i, current);

            // get the id of the last created item
            int lastId = -1;

            if (Controls.Count > 0)
            {
                lastId = Iterator.GetIntegerId(Controls[Controls.Count - 1].ID);
            }

            // initialize item from template
            ItemTemplate.InstantiateIn(item);
            InvisibleTemplate.InstantiateIn(invItem);

            // set the ids appropriately
            item.ID    = Iterator.FormatId(lastId + 1);
            invItem.ID = Iterator.FormatId(lastId + 2);

            // add item to the child controls collection
            Controls.Add(item);
            Controls.Add(invItem);

            if (doDatabind)
            {
                item.DataBind();
                invItem.DataBind();
            }
        }
        public void RefreshItem(int dataItemIndex)
        {
            // set the datasource position
            IOSList rl = DataSource;

            rl.SetPosition(dataItemIndex);
            SelectedIndex = dataItemIndex;

            // databind the correspondent item
            int          controlIndex = GetItemControlIndex(dataItemIndex);
            RepeaterItem item         = (RepeaterItem)Controls[controlIndex];

            item.DataItem = rl.Current;
            item.DataBind();

            InvisibleItem invItem = (InvisibleItem)Controls[controlIndex + 1];

            invItem.DataItem = rl.Current;
            invItem.DataBind();
        }