Witaj, trochę późno, może sam już poradziłeś a może nie i się przysłużę :)
Na wstępie powiem tylko że w moim przypadku tabela z pracownikami zawierała klucze obce do słownika "typów" tych pracowników dzięki czemu po wartości idTyp można zbadać czy pracownik jest Administratorem, Kierowcą itp....
Najpierw przy ładowaniu formatki ładowałem dane do treeview-a.
Pierwsze 5 wierszy to tworzenie obiektów poszczególnych klas, kolejno obiekt samego "drzewka" i 4 "gałęzie" (węzły)
Potem do obiektu drzewa o nazwie "x" dodaje te gałęzie zwane węzłami za pomocą metody add
Kopiuj
TreeView x = new TreeView();
TreeNode admin = new TreeNode("Administratorzy");
TreeNode driver = new TreeNode("Kierowcy");
TreeNode owner = new TreeNode("Właściciel");
TreeNode old = new TreeNode("Archiwalny");
x.Nodes.Add(admin);
x.Nodes.Add(driver);
x.Nodes.Add(owner);
x.Nodes.Add(old);
Następnie pobierałem dane z tabeli, zapytanie zwracało dwie kolumny, pierwsza to złożenie imienia i nazwiska, druga (której nie pokazywałem na drzewie) to wspomniany idTyp pracownika:
Kopiuj
SqlCommand sqlKomenda = new SqlCommand("select isnull(fp.imie,'')+' '+isnull( fp.nazwisko,''), fp.idTyp from Firma.Pracownicy fp", sql_polaczenie);
sql_czytnikdanych = sqlKomenda.ExecuteReader();
while (sql_czytnikdanych.Read())
{
if ((Convert.ToInt32(sql_czytnikdanych[1].ToString())) == 1)
{
admin.Nodes.Add(sql_czytnikdanych[0].ToString());
}
else if ((Convert.ToInt32(sql_czytnikdanych[1].ToString())) == 2)
{
driver.Nodes.Add(sql_czytnikdanych[0].ToString());
}
else if ((Convert.ToInt32(sql_czytnikdanych[1].ToString())) == 3)
{
owner.Nodes.Add(sql_czytnikdanych[0].ToString());
}
else if ((Convert.ToInt32(sql_czytnikdanych[1].ToString())) == 4)
{
old.Nodes.Add(sql_czytnikdanych[0].ToString());
}
} x.EndUpdate(); x.ExpandAll();
Jak widać badanie wartości tego idTyp pozwala określić rodzaj klienta i wrzucić go na odpowiednią gałąź drzewa.
Ewentualnie można zastosować switch-a, będzie mniej klepania :)