using System; using System.ComponentModel; using System.Web.UI; using System.Web.UI.WebControls; namespace Inferis.Web.Controls { public class EditableRepeater : Repeater { private ITemplate editorTemplate; [DefaultValue((string)null), Browsable(false), PersistenceMode(PersistenceMode.InnerProperty), TemplateContainer(typeof(RepeaterItem))] public virtual ITemplate EditorTemplate { get { return this.editorTemplate; } set { this.editorTemplate = value; } } public int EditItemIndex { get { return ViewState["EditItemIndex"] != null ? (int)ViewState["EditItemIndex"] : -1; } set { ViewState["EditItemIndex"] = value; } } protected override RepeaterItem CreateItem(int itemIndex, ListItemType itemType) { if (itemIndex == EditItemIndex) itemType = ListItemType.EditItem; return base.CreateItem(itemIndex, itemType); } protected override void InitializeItem(RepeaterItem item) { if (editorTemplate != null && item.ItemType == ListItemType.EditItem) editorTemplate.InstantiateIn(item); else base.InitializeItem(item); } } }