public TreeGridAdvancedNode AddNode(TreeGridAdvancedNode parent, TreeGridRow xrow, bool addexpanded) { if (parent == null) { parent = MainNode; //throw new Exception("Node must have parent, use grid.MainNode instead"); } rowid_generator++; TreeGridAdvancedNode newnode = new TreeGridAdvancedNode(); newnode.RowId = rowid_generator; newnode.Parent = parent; newnode.Level = parent.Level + 1; xrow.ChildIndex = parent.Childs.Count; xrow.NodeId = rowid_generator; xrow.Level = newnode.Level; xrow.IsRoot = newnode.Level == 0; xrow.Parent = parent.Row; xrow.Node = newnode; newnode.Expanded = addexpanded; newnode.Row = xrow; newnode.Grid = this; if (FMaxLevel < newnode.Level) { FMaxLevel = newnode.Level; } AllRows.Add(rowid_generator, newnode); parent.Childs.Add(newnode); return(newnode); }
public void Contract() { if (Expanded) { int index = Grid.Rows.IndexOf(Row); Grid.SuspendLayout(); try { if (index >= 0) { if ((Childs.Count > 100) || (Grid.Rows.Count > 1000)) { Expanded = false; Grid.DrawNodes(); } else { for (int i = Childs.Count - 1; i >= 0; i--) { TreeGridAdvancedNode nchild = Childs[i]; nchild.RemoveFromGrid(); Expanded = false; } } } } finally { Grid.ResumeLayout(); } } }
public static void ExpandToLevel(TreeGridAdvancedNode nnode, int newlevel) { nnode.Expanded = nnode.Level <= newlevel; foreach (TreeGridAdvancedNode childnode in nnode.Childs) { ExpandToLevel(childnode, newlevel); } }
public TreeGridAdvancedNode AddNode(TreeGridAdvancedNode parent, object[] nvalues, bool addexpanded) { TreeGridRow nrow = new TreeGridRow(); nrow.CreateCells(this, nvalues); return(AddNode(parent, nrow, addexpanded)); }
private static void ClearNode(TreeGridAdvancedNode nnode) { foreach (TreeGridAdvancedNode childnode in nnode.Childs) { ClearNode(childnode); } nnode.Childs.Clear(); nnode.Rows.Clear(); }
public void DrawNodes() { SuspendLayout(); try { TreeGridAdvancedNode selnode = null; if (SelectedRows.Count == 1) { if (SelectedRows[0] is TreeGridRow) { selnode = ((TreeGridRow)SelectedRows[0]).Node; } } Rows.Clear(); // Disable user sorting if mor than ona level bool disablesort = false; foreach (DataGridViewColumn ncol in Columns) { if (ncol is TreeGridAdvancedColumn) { disablesort = true; } } if (disablesort) { foreach (DataGridViewColumn ncol in Columns) { ncol.SortMode = DataGridViewColumnSortMode.NotSortable; } } MainNode.Expanded = true; List <TreeGridRow> AddList = new List <TreeGridRow>(); foreach (TreeGridAdvancedNode nnode in MainNode.Childs) { TreeGridAdvancedNode.FillExpanded(nnode, AddList); } Rows.AddRange(AddList.ToArray()); if (selnode != null) { foreach (DataGridViewRow xrow in Rows) { if (((TreeGridRow)xrow).Node == selnode) { CurrentCell = xrow.Cells[FirstDisplayedScrollingColumnIndex]; } } } } finally { ResumeLayout(); } }
public static void FillExpanded(TreeGridAdvancedNode nnode, List <TreeGridRow> AddList) { AddList.Add(nnode.Row); if (nnode.Expanded) { foreach (TreeGridAdvancedNode childnode in nnode.Childs) { //if (childnode.Expanded) FillExpanded(childnode, AddList); } } }
public void ClickNode(TreeGridRow nrow) { TreeGridAdvancedNode nnode = ((TreeGridAdvanced)(nrow.DataGridView)).FindNode(nrow); if (nnode.Expanded) { nnode.Contract(); } else { nnode.Expand(); } }
public void RemoveFromGrid() { for (int i = Childs.Count - 1; i >= 0; i--) { TreeGridAdvancedNode nchild = Childs[i]; nchild.RemoveFromGrid(); } int index = Grid.Rows.IndexOf(Row); if (index >= 0) { Grid.Rows.RemoveAt(index); } Expanded = false; }
public void DrawLevel(int level) { TreeGridAdvancedNode.ExpandToLevel(MainNode, level); DrawNodes(); }