webForumDet fria alternativet

TreeView problem

.NETur .NET

7 svar · 310 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

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

Medlem sedan juni 20022 599 inlägg
#2
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?

Medlem sedan mars 20011 880 inlägg
#3

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??

Medlem sedan juni 20022 599 inlägg
#4

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)

Medlem sedan mars 20011 880 inlägg
#5

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?

Medlem sedan juni 20022 599 inlägg
#6

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
}
Medlem sedan mars 20011 880 inlägg
#7

Varifrån får du i resp j?

Medlem sedan juni 20022 599 inlägg
#8

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

127 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)