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); } }
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); } } }