Avatar billede jackass- Nybegynder
06. december 2010 - 15:49 Der er 5 kommentarer og
1 løsning

Treeview fra SQLite database

Hej,

Hvordan kan jeg populate en treeview ud fra udtræk fra en database? Der er kun 2 niveauer med følgende referencer.. Jeg har kaldt dem Head og Child:


rowid    headline    name    parentID
1    Head 1           
2    Head 2           
4        Child 2        2
5        Child 3        1
6        Child 7        2
7        Child 5        1
8        Child 8        1
9    Head 3           
10        Child 10        9

Tekst-formateringen stinker lidt, så jeg har lagt strukturen her også, for overskuelighedens skyld: http://pastebin.com/BztwNFSK

Og samtidig adde eventhandlers eller hvad der skal til at for at håndtere når brugeren klikker på en node.

Pft :-)
Avatar billede netassist Juniormester
07. december 2010 - 01:41 #1
har du lavet kalde til sqlite
Avatar billede jackass- Nybegynder
07. december 2010 - 07:56 #2
Ja, det går fint med at give data ud og i en DataTable.

Det er det med at generere treeview'en der kniber - eller sætte datasource eller hvad man kan.
Avatar billede jackass- Nybegynder
07. december 2010 - 10:01 #3
For informationens skyld:


SQLiteDataReader dataReader = null;
SQLiteDataAdapter adapter = new SQLiteDataAdapter();
DataTable dt = new DataTable();
try
{
    SQLiteConnection connectionString = new SQLiteConnection("Data Source=" + Path.GetDirectoryName(Application.ExecutablePath) + "\\myDB.s3db;Version=3;New=False;Compress=True");
    using (SQLiteConnection conn = new SQLiteConnection(connectionString))
    {
        conn.Open();
        SQLiteCommand cmd = new SQLiteCommand();
        cmd.Connection = conn;
        cmd.CommandText = "select rowid, headline, parentID from myTable";
        cmd.CommandTimeout = 120;
        dataReader = cmd.ExecuteReader();
        dt.Load(dataReader);
        dataReader.Close();
        cmd.Connection.Close();

        ..og så gik det lidt i kage :-/
    }
}
Avatar billede jackass- Nybegynder
07. december 2010 - 12:06 #4
Got it :-)


treeView1.Nodes.Clear();
int ParentID = 0;
ArrayList tnodes = new ArrayList();
foreach (DataRow dtRow in dt.Rows)
{
    ParentID = Convert.ToInt32(dtRow["parentID"]);
    if (ParentID == 0)
    {
        TreeNode node = new TreeNode();
        node.Text = dtRow["headline"].ToString();
        node.Tag = Convert.ToInt32(dtRow["rowid"]);
        treeView1.Nodes.Add(node);
        tnodes.Add(node);
    }
    else
    {
        for (int i=0; i<tnodes.Count; i++)
        {
            if ((int)((TreeNode)tnodes[i]).Tag == ParentID)
            {
                TreeNode node = new TreeNode();
                node.Text = dtRow["name"].ToString();
                node.Tag = Convert.ToInt32(dtRow["rowid"]);
                tnodes.Add(node);
                ((TreeNode)tnodes[i]).Nodes.Add(node);
                break;
            }
        }
    }
}
treeView1.Sort();
Avatar billede jackass- Nybegynder
07. december 2010 - 12:06 #5
Lukker
Avatar billede netassist Juniormester
08. december 2010 - 00:56 #6
super. sorry jeg ikke nået at hjælpe . har haft meget trævl dage
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester