---
title: "Visa hierarkisk data i gridview"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/168329-visa-hierarkisk-data-i-gridview"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "doggelito"
published: "2008-01-22T15:53:01.000Z"
updated: "2008-01-22T16:25:08.000Z"
replies: 3
views: 290
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/168329-visa-hierarkisk-data-i-gridview"
---

# Visa hierarkisk data i gridview

## #1 — doggelito, 2008-01-22T15:53Z

Har en hierarkisk IList\<Category\>:

```
public class Category
{
        private int id;
        private string name;
        private IList<Category> childCategories;

        public virtual int Id
        {
            get { return id; }
            set { id = value; }
        }

        public virtual string Name
        {
            get { return name; }
            set { name = value; }
        }

        public virtual IList<Category> ChildCategories
        {
            get { return childCategories; }
            set { childCategories = value; }
        }
}
```

Går det på något finurligt sätt att binda denna till en gridview i "öppet" läge, så att säga?

Ex. om listan ser ut:

```
Cat 1
     Cat 1.1
          Cat 1.1.1
     Cat 1.2
```

så vill jag att gridviewn ser ut:
Cat 1
Cat 1.1
Cat 1.1.1
Cat 1.2

Eller måste jag loopa igenom min samling och skapa en ny IList där varje kategori ligger under varann, dvs. inte hierarkisk?

Nån som förstår vad jag menar?!  :OO

Permalänk: https://www.webforum.nu/p/168329

## #2 — CatZ, 2008-01-22T16:03Z

Inga bekymmer! 

```
public static IList<Item> GetData()
{
	IList<Item> itemList = new List<Item> ();
	for (int i = 0; i < 10; i++)
	{
		Item _item = new Item("item" + i.ToString ());
		for (int j = 0; j < 5; j++)
		{
			Item subItem = new Item("subitem" + j.ToString ());
			_item.SubItems.Add (subItem);
		}
		itemList.Add (_item);
	}
	return itemList;
}
```

Du kan fortsätta sådär i evinnerlighet egentligen, men rent prestandamässigt **/red särskrivning** vete tusan om det är så vettigt. Jag har bara försökt med repeaters...

Permalänk: https://www.webforum.nu/p/2074995

## #3 — CatZ, 2008-01-22T16:07Z

Ursäkta mig, du använder dig av separata listor, då kanske inte min modell är något för dig...

Permalänk: https://www.webforum.nu/p/2074996

## #4 — doggelito, 2008-01-22T16:25Z

Njae, modellen passar nog inte riktigt men tack för tipset ändå! :bire
Det känns som om jag måste skapa en ny lista (tänkte att gridviewn kunda separera själv men det är nog överkurs!)

Så här fick det bli:

```
    IList<Category> categories = session.CreateCriteria(typeof(Category)).List<Category>();

    IList<Category> list = new List<Category>();
    list.Add(categories[0]);
    list = recursiveAdd(list, categories[0].ChildCategories);

...

    private IList<Category> recursiveAdd(IList<Category> list, IList<Category> category)
    {
        foreach (Category c in category)
        {
            list.Add(c);

            if (c.ChildCategories.Count > 0)
                recursiveAdd(list, c.ChildCategories);
        }

        return list;
    }
```

Permalänk: https://www.webforum.nu/p/2074997

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/168329-visa-hierarkisk-data-i-gridview
