---
title: "TreeView problem"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/76275-treeview-problem"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "saw"
published: "2003-05-07T20:42:30.000Z"
updated: "2003-05-08T20:09:47.000Z"
replies: 7
views: 326
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/76275-treeview-problem"
---

# TreeView problem

## #1 — saw, 2003-05-07T20:42Z

Hur laddar jag en treeview i C#?
Jag har försökt så här:

```
private void treeViewFyllAlbum()
{
//
treeView1.Nodes.Clear();

string kolumn = listBoxFyllTitlar.SelectedItem.ToString();

string SQLstring ="SELECT t_Album.CD_ID, t_Album.Album As
 Albumet " +
" FROM t_Album INNER JOIN t_SongTitlar " +
" ON t_Album.CD_ID = t_SongTitlar.Album" +
 " WHERE t_SongTitlar.songtitel =  '" + kolumn + "'";			
//
da1 = new OleDbDataAdapter(SQLstring, con);
ds1 = new DataSet("frånAlbum");
try
{
con.Close(); 
con.Open();
da1.Fill(ds1,"frånAlbum");				
con.Close();
	
treeView1.ImageIndex=0;	
string strAlbum =ds1.Tables["frånAlbum"].Rows[0]
["Albumet"].ToString();
treeView1.Nodes.Add(strAlbum);
label1.Text="Aktuell Titel: " + listBoxFyllTitlar.Text + " Album: " + strAlbum;

SQLstring ="SELECT t_SongTitlar.ArrNo, t_SongTitlar.songtitel As Song " +
 " FROM t_Album INNER JOIN t_SongTitlar ON t_Album.CD_ID = 
t_SongTitlar.Album " +
 " WHERE t_Album.Album = '" + strAlbum + "'";
da1 = new OleDbDataAdapter(SQLstring, con);
ds1 = new DataSet("frånAlbum");
con.Close(); 
con.Open();
da1.Fill(ds1,"frånAlbumTitel");				
con.Close();

int rader = ds1.Tables["frånAlbumTitel"].Rows.Count;
nr = new String[rader];
for(int a = 0;a < rader; a++)
{
treeView1.Nodes.Add
(ds1.Tables["frånAlbumTitel"].Rows[a]["Song"].ToString());
nr[a] = ds1.Tables["frånAlbumTitel"].Rows[a]["Song"].ToString();
}

}
catch(Exception fel)
{
MessageBox.Show(fel.Message,"Databasfel");
}
}
```

I roten skall "Albumet" finnas.
I noderna "songtitlar", men när jag gör så här så är ju "allt" i roten.
Hur bör man göra?

Jag har tittat runt, men inte hittat någonting som hjälpt mig.
 :q

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

## #2 — niko, 2003-05-07T20:51Z

```
treeView1.Nodes.Add(strAlbum);

// osv 

for(int a = 0;a < rader; a++)
{
treeView1.Nodes[0].Nodes.Add
(ds1.Tables["frånAlbumTitel"].Rows[a]["Song"].ToString());
nr[a] = ds1.Tables["frånAlbumTitel"].Rows[a]["Song"].ToString();
}
```

 .. borde det bli, tycker jag. Du förstår principen?

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

## #3 — saw, 2003-05-07T21:23Z

Du är kanon, och otroligt snabb.
Två snabbfrågor.
Hur gör jag för att den skall vara "öppen"(slippa klicka) när jag startar?
\[treeView1.ExpandAll(); fungerar inte)
Som du såg så hänvisade jag till treeView1.ImageIndex=0;	
Lite senare i kodan lade jag till treeView1.ImageIndex=1;	för att få iconerna i noderna.
Men när jag klicka så byter iconerna plats...

Vad tror du??

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

## #4 — niko, 2003-05-07T21:53Z

> Hur gör jag för att den skall vara "öppen"(slippa klicka) när jag startar?

```
treeView1.ExpandAll()
```

.. när allt är inlagt.

> Men när jag klicka så byter iconerna plats...

Är lite osäker men jag har en kod där jag gör motsvarande så här:

```
System.Windows.Forms.TreeNode oNode = New System.Windows.Forms.TreeNode();
oNode.ImageIndex = 0 
oNode.SelectedImageIndex = 0
oNode.Text =strAlbum;
treeView1.Nodes.Add(oNode);
//osv

for(int a = 0;a < rader; a++)
{
System.Windows.Forms.TreeNode oTmpNode = New System.Windows.Forms.TreeNode();
oTmpNode.ImageIndex = 1 
oTmpNode.SelectedImageIndex = 1
oTmpNode.Text=ds1.Tables["frånAlbumTitel"].Rows[a]["Song"].ToString();
treeView1.Nodes[0].Nodes.Add(oTmpNode);
nr[a] = ds1.Tables["frånAlbumTitel"].Rows[a]["Song"].ToString();
}
```

och då stannar ikonerna kvar. (Ta isåf bort treeView1.ImageIndex=0 och treeView1.ImageIndex=1)

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

## #5 — saw, 2003-05-08T04:34Z

Det fungerar helt underbart. Exact som jag ville ha det.
En tillägsfråga(det är det alltid) går det lätt att ändra iconen för rotnoden om den uppfyller vissa vilkor?

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

## #6 — niko, 2003-05-08T16:17Z

Visst. Ikonerna för alla noder kan ändras under run-time.
För toppnoden:

```
if (<villkor>)
{
	treeView1.Nodes[0].ImageIndex = i
	treeView1.Nodes[0].SelectedImageIndex= j
}
```

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

## #7 — saw, 2003-05-08T19:53Z

Varifrån får du i resp j?

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

## #8 — niko, 2003-05-08T20:09Z

Ingenstans. Det var bara exempel. Du får ersätta dem med de index i imagelisten som du vill använda.

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/76275-treeview-problem
