Witam,
Chciałem zapytać jak wyświetlić informacje z bazy w formie drzewa.
Chodzi o to, ze w bazie jest system w którym znajduje się kilka urządzeń. I chciałbym aby to wyglądało tak :
- system
- urządzenie 1
- urządzenie 2
- urządzenie 3
itd.
Witam,
Chciałem zapytać jak wyświetlić informacje z bazy w formie drzewa.
Chodzi o to, ze w bazie jest system w którym znajduje się kilka urządzeń. I chciałbym aby to wyglądało tak :
itd.
a w czym masz problem?
Mam groupBox'a ( systemy ) w którym łącze się z bazą i teraz jak mam w odpowiednim miejscu wyświetlić te informacje aby wyglądały tak jak chce?
poważnie pytasz? Przecież to jest śmieszne... Bierzesz coś co ci pozwoli wyświetlić tak jak chcesz i wyświetlasz. Jak nie wiesz jak dany komponent obsłużyć to szukasz, jak nie wiesz co może wyświetlić dane w formie drzewka (podpowiedz: drzewo to tree po angielsku) to szukasz. Jak poszukałeś i masz KONKRETNY problem to dopiero wtedy piszesz na forum
Przepraszam , nie denerwuj się tak :)
Mam taki problem :
try
{
myConnection.Open();
SqlCommand myCommand = new SqlCommand("Command String", myConnection);
myCommand.CommandText = "SELECT id, name FROM system" ;
SqlDataReader Rd = myCommand.ExecuteReader();
while (Rd.Read())
{
TreeNode node = new TreeNode(Rd["name"].ToString());
treeView1.Nodes.Add(node);
}
Teraz wyświetlają mi się dwa systemy ( system1 = id 1 , system2 = id 3) a w drugiej tabeli mam urządzenia, które muszę podpiąć pod te systemy. Czyli jeśli urządzenie np. komputer ma id = "1" to do "system1" itd. i nie wiem jak to zrobić ...
możesz pobrać wszystko za jednym zamachem i odpowiednio posortować, np.:
dla tabel
CREATE TABLE s (id INTEGER, name VARCHAR2(100));
CREATE TABLE u (id INTEGER, sid INTEGER, name VARCHAR2(100));
i danych w nich
INSERT INTO s VALUES(1, 'system 1');
INSERT INTO s VALUES(2, 'system 2');
INSERT INTO s VALUES(3, 'system 3');
INSERT INTO u VALUES(1, 1, 'sys 1 urz 1');
INSERT INTO u VALUES(2, 1, 'sys 1 urz 2');
INSERT INTO u VALUES(3, 2, 'sys 2 urz 1');
INSERT INTO u VALUES(4, 2, 'sys 2 urz 2');
INSERT INTO u VALUES(5, 2, 'sys 2 urz 3');
INSERT INTO u VALUES(6, 3, 'sys 3 urz 1');
INSERT INTO u VALUES(7, 4, 'sys 4 urz 1');
zapytanie
SELECT poziom, name FROM (SELECT 1 poziom, s.id, 0 u_id, s.name FROM s
UNION
SELECT 2, u.sid, u.id, u.name FROM u WHERE u.sid IN (SELECT id FROM s)) ORDER BY id, poziom, u_id
zwróci Ci dane w takiej postaci
Poziom | Nazwa |
---|---|
1 | system 1 |
2 | sys 1 urz 1 |
2 | sys 1 urz 2 |
1 | system 2 |
2 | sys 2 urz 1 |
2 | sys 2 urz 2 |
2 | sys 2 urz 3 |
1 | system 3 |
2 | sys 3 urz 1 |
teraz możesz to wsadzić do treeview
TreeNode root;
while (Rd.Read())
{
if (rd["poziom"].ToString() == "1")
root = treeView1.Nodes.Add(Rd["name"].ToString());
else
root.Nodes.Add(Rd["name"].ToString());
}
Musisz jeszcze sprawdzać, czy root nie jest nullem (jeśli warunek jest niespełniony)