我想用這個代碼綁定我的asp.net菜單控件到一個集合..但是它給了我一個錯誤,我的集合現在是IHierarchyEnumerable ..我理解它爲什麼太..綁定ASP.Net菜單控件到集合
StringCollection sc = pos.getAllmembers();
Menu1.DataSource = pos.getAllmembers().GetEnumerator();
有沒有解決的辦法..
我想用這個代碼綁定我的asp.net菜單控件到一個集合..但是它給了我一個錯誤,我的集合現在是IHierarchyEnumerable ..我理解它爲什麼太..綁定ASP.Net菜單控件到集合
StringCollection sc = pos.getAllmembers();
Menu1.DataSource = pos.getAllmembers().GetEnumerator();
有沒有解決的辦法..
菜單控件需要收集實現IHierarchicalEnumerable的集合中的IHierarcyData對象。
開始將每個字符串存儲從StringCollection一個IHierarcyData類...
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
}
構建一個類,將成爲集...
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
}
你可以在頁面現在構建菜單...
MyMenu pos = new MyMenu();
StringCollection sc = new StringCollection();
sc.Add("First");
sc.Add("Second");
pos.Add(sc);
Menu1.DataSource = pos;
Menu1.DataBind();
你可以試試這個MSDN文章中書面方式類似於包裝:
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;
}
}