c# - Populate treeview with dynamic subnodes -
i have table 2 columns:
+-------------+------------+ | level | desc | +-------------+------------+ | 1 | | +-------------+------------+ | 2 | b | +-------------+------------+ | 2 | c | +-------------+------------+ | 1 | d | +-------------+------------+ | 2 | e | +-------------+------------+ | 2 | f | +-------------+------------+ | 3 | g | +-------------+------------+ | 1 | h | +-------------+------------+ | 1 | | +-------------+------------+ | 2 | j | +-------------+------------+ | 2 | k | +-------------+------------+
and need create display of info in treeview according level column , should like:
- 1 -- 2 b -- 2 c -1 d -- 2 e -- 2 f -- 3 g -1 h -1 -- 2 j -- 2 k
so, level columns represents node. level 1 main node, level 2 subnode of level 1, level 3 subnode of level 2, level 4 subnode of 3... know how populate treeview when there fixed numbers of nodes , subnodes in case don't have thought how populate 1 node consist 3, 4 or more subnodes.
hope help you, tried illustration , worked
private void populatetreeview_load(object sender, eventargs e) { datatable table = new datatable(); table.columns.add("level"); table.columns.add("data"); table.rows.add(1, "a"); table.rows.add(2, "b"); table.rows.add(2, "c"); table.rows.add(1, "d"); table.rows.add(2, "e"); table.rows.add(2, "f"); table.rows.add(3, "g"); table.rows.add(4, "z"); table.rows.add(5, "x"); table.rows.add(2, "h"); table.rows.add(3, "i"); table.rows.add(1, "j"); table.rows.add(2, "k"); treenode lastnode = new treenode(); (int = 0; < table.rows.count; i++) { treenode newnode = new treenode((string)table.rows[i]["data"]); if (i == 0) treeview.nodes.add(newnode); else { int currentlevel = convert.toint32(table.rows[i]["level"]); int lastlevel = convert.toint32(table.rows[i-1]["level"]); if (currentlevel < lastlevel) { if (currentlevel == 1) treeview.nodes.add(newnode); else { treenode currentnode = lastnode.parent; (int j = 0; j < lastlevel - currentlevel; j++) currentnode = currentnode.parent; currentnode.nodes.add(newnode); } } else if (currentlevel == lastlevel) { if (lastlevel == 1) treeview.nodes.add(newnode); else lastnode.parent.nodes.add(newnode); } else { lastnode.nodes.add(newnode); } } lastnode = newnode; } }
c# treeview
No comments:
Post a Comment