Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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();
         }
     }
 }
Esempio n. 3
0
 public static void ExpandToLevel(TreeGridAdvancedNode nnode, int newlevel)
 {
     nnode.Expanded = nnode.Level <= newlevel;
     foreach (TreeGridAdvancedNode childnode in nnode.Childs)
     {
         ExpandToLevel(childnode, newlevel);
     }
 }
Esempio n. 4
0
        public TreeGridAdvancedNode AddNode(TreeGridAdvancedNode parent, object[] nvalues, bool addexpanded)
        {
            TreeGridRow nrow = new TreeGridRow();

            nrow.CreateCells(this, nvalues);

            return(AddNode(parent, nrow, addexpanded));
        }
Esempio n. 5
0
 private static void ClearNode(TreeGridAdvancedNode nnode)
 {
     foreach (TreeGridAdvancedNode childnode in nnode.Childs)
     {
         ClearNode(childnode);
     }
     nnode.Childs.Clear();
     nnode.Rows.Clear();
 }
Esempio n. 6
0
        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();
            }
        }
Esempio n. 7
0
 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);
         }
     }
 }
Esempio n. 8
0
        public void ClickNode(TreeGridRow nrow)
        {
            TreeGridAdvancedNode nnode = ((TreeGridAdvanced)(nrow.DataGridView)).FindNode(nrow);

            if (nnode.Expanded)
            {
                nnode.Contract();
            }
            else
            {
                nnode.Expand();
            }
        }
Esempio n. 9
0
        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;
        }
Esempio n. 10
0
 public void DrawLevel(int level)
 {
     TreeGridAdvancedNode.ExpandToLevel(MainNode, level);
     DrawNodes();
 }