示例#1
0
        public static Hierarchie Define(TreeNode mainNode, int n, int i, ListBox listBox, Excel.Worksheet xlWs)
        {
            int j = 0;
            List <Hierarchie> ssHierarchie = new List <Hierarchie>();

            foreach (TreeNode subNode in mainNode.Nodes)
            {
                j++;
                ssHierarchie.Add(Define(subNode, n + 1, j, listBox, xlWs));
            }

            if (j == 0)
            {
                Local local = new Local()
                {
                    Nom           = mainNode.Text,
                    IdRelationnel = i,
                    Niveau        = n,
                    Cell          = (Excel.Range)mainNode.Tag,
                };
                local.Properties = GiveProperties(listBox, local, xlWs);

                mainNode.ToolTipText = local.ToString();
                mainNode.Tag         = local;

                return(local);
            }
            else
            {
                Hierarchie hierarchie = new Hierarchie(mainNode.Text, i, n, ssHierarchie);

                mainNode.ToolTipText = hierarchie.ToString();
                mainNode.Tag         = hierarchie;

                return(hierarchie);
            }
        }
示例#2
0
        public static void PopulateDataTable(DataTable myData, Hierarchie hierarchie, ArrayList listHierarchie)
        {
            listHierarchie = new ArrayList(listHierarchie);

            DataRow dataRow;

            if (hierarchie is Local local)
            {
                //Check for "Nb" and duplicate if >1
                int nbRepetition = 1;
                for (int i = 0; i < local.Properties.Count; i++)
                {
                    if (local.Properties[i].Item1 == "Nb" && local.Properties[i].Item2 != "")
                    {
                        if (Convert.ToInt16(local.Properties[i].Item2) > 1)
                        {
                            nbRepetition        = Convert.ToInt16(local.Properties[i].Item2);
                            local.Properties[i] = new Tuple <string, string>(local.Properties[i].Item1, "1");
                        }
                    }
                }

                //Repeat depending on number
                for (int repet = 1; repet <= nbRepetition; repet++)
                {
                    dataRow = myData.NewRow();

                    dataRow["Id_Local_Relationnel"] = local.IdRelationnel;
                    dataRow["Local"]           = local.Nom;
                    dataRow["Id_Local_Unique"] = nbLocal;

                    nbLocal++;

                    //Add Id_Entité -> Sous-groupe
                    for (int i = 0; i < listHierarchie.Count; i++)
                    {
                        dataRow[i] = listHierarchie[i];
                    }

                    //Add local properties to datatable
                    foreach (Tuple <string, string> property in local.Properties)
                    {
                        if (!myData.Columns.Contains(property.Item1))
                        {
                            myData.Columns.Add(property.Item1);
                        }
                        dataRow[property.Item1] = property.Item2;
                    }

                    myData.Rows.Add(dataRow);
                }
            }
            else
            {
                listHierarchie.Add((hierarchie.IdEntite == 0) ? hierarchie.Id : hierarchie.IdEntite);
                listHierarchie.Add(hierarchie.Nom);
                foreach (Hierarchie ssHierarchie in hierarchie.List)
                {
                    PopulateDataTable(myData, ssHierarchie, listHierarchie);
                }
            }
        }