ربط التحكم بقائمة ASP.Net بمجموعة
-
06-07-2019 - |
سؤال
أحاول استخدام هذا الرمز لربط عنصر التحكم في قائمة asp.net الخاص بي بمجموعة ..لكنه يعطيني خطأً بأن مجموعتي أصبحت الآن IHierarchyEnumerable..الذي أفهم لماذا أيضا..
StringCollection sc = pos.getAllmembers();
Menu1.DataSource = pos.getAllmembers().GetEnumerator();
هل هناك طريقة للتغلب على ذلك..
المحلول
يتطلب التحكم في القائمة مجموعة من IHierarcyData الكائنات في المجموعة التي تنفذ IHierarchicalEnumerable.
ابدأ بفئة IHierarcyData التي ستقوم بتخزين كل سلسلة من 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
}
قم ببناء الفصل الذي سيكون المجموعة...
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;
}
}
لا تنتمي إلى StackOverflow