Die Bindung ASP.Net Menüsteuerung zu einer Sammlung
-
06-07-2019 - |
Frage
Ich versuche, diesen Code zu verwenden, um meine asp.net Menüsteuerung auf eine Sammlung zu binden .. aber sein gibt mir einen Fehler, meine Sammlung jetzt ist IHierarchyEnumerable .. was ich verstehen, warum auch ..
StringCollection sc = pos.getAllmembers();
Menu1.DataSource = pos.getAllmembers().GetEnumerator();
gibt es eine Möglichkeit, um dieses ..
Lösung
Die Menüsteuerung erfordert eine Sammlung von IHierarcyData Objekte in einer Sammlung, die implementiert IHierarchicalEnumerable .
Starten Sie mit einem IHierarcyData Klasse, die jede Saite aus dem String gespeichert werden ...
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
}
eine Klasse erstellen, die die Sammlung sein wird ...
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
}
In der Seite, die Sie jetzt das Menü erstellen können ...
MyMenu pos = new MyMenu();
StringCollection sc = new StringCollection();
sc.Add("First");
sc.Add("Second");
pos.Add(sc);
Menu1.DataSource = pos;
Menu1.DataBind();
Andere Tipps
Sie können versuchen, einen Wrapper wie in diesem MSDN-Artikel writting:
http://msdn.microsoft.com /en-us/library/system.web.ui.ihierarchicalenumerable.aspx
public class StringHeirarchy : StringCollection,IHierarchyEnumerable
{
public IHierarchyData GetHierarchyData(object enumeratedItem)
{
return enumeratedItem as IHierarchyData;
}
}