Avatar
Maros2470
Člen
Avatar
Maros2470:

Zdravím všechny. Potřebuji poradit. Mám databázi, která obsahuje tři sloupce: Kategorie, Hodnocení a Recept. Databázi načítám do treeView. Problém je v tom, že se mi kategorie a hodnocení zobrazují několikrát. Potřeboval bych, aby se kategorie zobrazila jednou, pod ní hodnocení a pod ní recepty, které tam spadají. Můžete mi poradit? Mám to napsáno takto:

SqlCeCommand com = new SqlCeCommand("SELECT * FROM Recepty",cn);
           SqlCeDataReader dr = com.ExecuteReader();
           while (dr.Read())
           {
               TreeNode node = new TreeNode(dr["Kategorie"].ToString());
               node.Nodes.Add(dr["Hodnoceni"].ToString());
               node.Nodes[0].Nodes.Add(dr["ReceptJmeno"].ToString());
               seznamTreeView.Nodes.Add(node);
               progressBar.Visible = true;
               timer1.Enabled = true;
           }

Zobrazuje se mi to takto:

Editováno 31.7.2014 10:36
 
Odpovědět 31.7.2014 10:33
Avatar
Maros2470
Člen
Avatar
Maros2470:

Možná bude lépe vidět

 
Nahoru Odpovědět 31.7.2014 10:38
Avatar
Odpovídá na Maros2470
Michal Štěpánek:

Použij GROUP BY, to ti vybere položku pouze jednou...

Nahoru Odpovědět 31.7.2014 13:04
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
sadlomaslox25:

bud to grouby nebo to seskladat v tom cyklu (spravne by se to melo delat na presenteru, ale nepredpokladam ze mas MVP)

while (dr.Read())
{
    var categoy = seznamTreeView.Nodes.OfType<TreeNode>().FirstOrDefault(o => o.Text == dr["Kategorie"].ToString())
        ?? seznamTreeView.Nodes.Add(dr["Kategorie"].ToString());
    var subcat = categoy.Nodes.OfType<TreeNode>().FirstOrDefault(o => o.Text == dr["Hodnoceni"].ToString())
        ?? categoy.Nodes.Add(dr["Hodnoceni"].ToString());
    subcat.Nodes.Add(dr["ReceptJmeno"].ToString());

    progressBar.Visible = true;
    timer1.Enabled = true;
}

kod je napsane vicemene z hlavy takze snad to pujde, pripadne tam ale snad uvidis kde je problem a prepises to.

 
Nahoru Odpovědět 31.7.2014 14:40
Avatar
Maros2470
Člen
Avatar
Maros2470:

Díky za rady, už mi to funguje

 
Nahoru Odpovědět 1.8.2014 7:58
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.