Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Maros2470
Člen
Avatar
Maros2470:31.7.2014 10:33

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:31.7.2014 10:38

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:31.7.2014 13:04

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:31.7.2014 14:40

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:1.8.2014 7:58

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.