net ejemplos dinamico asp asp.net menu ienumerable collections

ejemplos - Enlazando el control de menú de ASP.Net a una colección



menu dinamico asp net c# (2)

El control de menú requiere una colección de objetos IHierarcyData en una colección que implementa IHierarchicalEnumerable .

Comience con una clase IHierarcyData que almacenará cada cadena de StringCollection ...

public class MyMenuItem : IHierarchyData { public MyMenuItem(string s) { Item = s; } public override string ToString() { return Item.ToString(); } #region IHierarchyData Members public IHierarchicalEnumerable GetChildren() { return null; } public IHierarchyData GetParent() { return null; } public bool HasChildren { get { return false; } } public object Item { get; set; } public string Path { get { return string.Empty; } } public string Type { get { return string.Empty; } } #endregion }

Construye una clase que será la colección ...

public class MyMenu : StringCollection, IHierarchicalEnumerable { List<IHierarchyData> _list = new List<IHierarchyData>(); public void Add(StringCollection strings) { foreach (string s in strings) { MyMenuItem i = new MyMenuItem(s); _list.Add(i); } } #region IHierarchicalEnumerable Members public IHierarchyData GetHierarchyData(object enumeratedItem) { return enumeratedItem as IHierarchyData; } #endregion #region IEnumerable Members public System.Collections.IEnumerator GetEnumerator() { return _list.GetEnumerator(); } #endregion }

En la página ahora puedes construir el menú ...

MyMenu pos = new MyMenu(); StringCollection sc = new StringCollection(); sc.Add("First"); sc.Add("Second"); pos.Add(sc); Menu1.DataSource = pos; Menu1.DataBind();

Estoy tratando de usar este código para vincular mi control de menú asp.net a una colección ... pero me está dando un error de que mi colección ahora es IHierarchyEnumerable ... lo cual entiendo por qué también ...

StringCollection sc = pos.getAllmembers(); Menu1.DataSource = pos.getAllmembers().GetEnumerator();

Hay alguna forma de evitar esto..