本文介绍了将ASP.Net菜单控件绑定到集合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图使用这个代码绑定我的asp.net菜单控件到一个集合..
但它给我一个错误,我的集合现在IHierarchyEnumerable ..我明白为什么也。 p>

i am trying to use this code to bind my asp.net menu control to a collection..but its giving me an error that my collection is now IHierarchyEnumerable.. which I understand why too..

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

有办法解决这个问题。

推荐答案

菜单控件需要一个对象集合中实现。

The menu control requires a collection of IHierarcyData objects in a collection that implements IHierarchicalEnumerable.

从一个IHierarcyData类开始,该类存储StringCollection ...

Start with a IHierarcyData class that will store each string from the 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
}

构建一个将是集合的类...

Build a class that will be the collection...

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 the page you can now construct the menu...

 MyMenu pos = new MyMenu();

 StringCollection sc = new StringCollection();
 sc.Add("First");
 sc.Add("Second");
 pos.Add(sc);

 Menu1.DataSource = pos;
 Menu1.DataBind();

这篇关于将ASP.Net菜单控件绑定到集合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-26 22:42
查看更多