//----------------------------------------------------------------------- private void GetSelectedFields(ArrayList lst, TreeNodeCollection nodes, CInfoChampDynamique defParent) { foreach (TreeNode node in nodes) { CInfoChampDynamique defProp = null; if (node.Tag is CInfoChampDynamique) { defProp = (CInfoChampDynamique)node.Tag; defProp = defProp.Clone(); if (defParent != null) { defProp.InsereParent(defParent); } } else if (node.Tag == null) //C'est un folder { defProp = defParent; } if (node.Checked && defProp != null && m_tableSelectionnes[defProp.NomPropriete] == null) { lst.Add(defProp); } else if (!node.Checked && defProp != null) { //Elle a été décochée !!! m_listeDecoches.Add(defProp); } GetSelectedFields(lst, node.Nodes, defProp); } }
private void m_arbre_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) { if (e.Node.Parent == null || !(e.Node.Parent.Tag is CInfoChampDynamique)) { m_lblTable.Text = m_structurePrincipale.NomConvivial; } else { m_lblTable.Text = ((CInfoChampDynamique)e.Node.Parent.Tag).NomPropriete; } if (e.Node != null && e.Node.Tag is CInfoChampDynamique) { m_champSel = e.Node.Tag as CInfoChampDynamique; TreeNode node = e.Node.Parent; while (node != null) { CInfoChampDynamique champParent = node.Tag as CInfoChampDynamique; if (champParent != null) { m_champSel.InsereParent(champParent); } node = node.Parent; } } }
//----------------------------------------------------------------------- private void FillTree(CInfoStructureDynamique structure, TreeNodeCollection nodes, CInfoChampDynamique defParente) { ArrayList lst = new ArrayList( ); lst.AddRange(structure.Champs); lst.Sort(new DefSorter()); //Trouve les catégories Hashtable tableCategories = new Hashtable(); foreach (CInfoChampDynamique info in lst) { if (info.Rubrique != "" && ShouldHadChamp(info)) { if (tableCategories[info.Rubrique] == null) { TreeNode node = new TreeNode(info.Rubrique); node.ImageIndex = 0; node.SelectedImageIndex = 0; nodes.Add(node); tableCategories[info.Rubrique] = node; } } } foreach (CInfoChampDynamique info in lst) { if (ShouldHadChamp(info)) { TreeNode node = new TreeNode(info.NomChamp); node.ImageIndex = info.StructureValeur != null?1:2; node.SelectedImageIndex = node.ImageIndex; TreeNodeCollection nodesParents = nodes; if (info.Rubrique != "") { TreeNode nodeParent = (TreeNode)tableCategories[info.Rubrique]; if (nodeParent != null) { nodesParents = nodeParent.Nodes; } } node.Tag = info; nodesParents.Add(node); if (info.StructureValeur != null && ShouldHasFils(info)) { node.Nodes.Add("*"); } CInfoChampDynamique newInfo = info.Clone(); if (defParente != null) { newInfo.InsereParent(defParente); } if (m_tableSelectionnes[newInfo.NomPropriete] != null) { node.Checked = true; } } } }