/// <summary>
        /// ////////////////////////////////////////////////////////////
        /// </summary>
        /// <param name="nodes"></param>
        /// <param name="objetParent"></param>
        /// <param name="nNbSousNiveauToFill"></param>
        protected virtual void FillNodes(TreeNode nodeParent, CObjetDonneeAIdNumeriqueAuto objetParent)
        {
            TreeNodeCollection nodes = null;

            if (nodeParent == null)
            {
                nodes = Nodes;
            }
            else
            {
                if (((CInfoNode)nodeParent.Tag).AreChildsLoaded)
                {
                    return;
                }
                nodes = nodeParent.Nodes;
                ((CInfoNode)nodeParent.Tag).AreChildsLoaded = true;
            }
            nodes.Clear();
            CListeObjetsDonnees listeFils = null;

            if (objetParent == null)
            {
                CContexteDonnee contexte = CSc2iWin32DataClient.ContexteCourant;
                if (m_objetRoot != null)
                {
                    contexte = m_objetRoot.ContexteDonnee;
                }
                listeFils = new CListeObjetsDonnees(contexte, m_typeObjets);
                if (m_objetRoot != null)
                {
                    listeFils.Filtre = new CFiltreData(m_objetRoot.GetChampId() + "=@1", m_objetRoot.Id);
                }
                else
                {
                    listeFils.Filtre = CFiltreData.GetAndFiltre(m_filtreRacine, new CFiltreData(m_strChampParent + " is null"));
                }
            }
            else
            {
                listeFils = (CListeObjetsDonnees)CInterpreteurTextePropriete.GetValue(objetParent, m_strProprieteListeFils);
                if (!m_bAutoriserFilsDesAutorises || !IsInFiltre(objetParent))
                {
                    listeFils.Filtre = CFiltreData.GetAndFiltre(listeFils.Filtre, m_filtreRacine);
                }
            }
            foreach (CObjetDonneeAIdNumeriqueAuto objetFils in listeFils)
            {
                bool bVoir = IsVisible(objetFils);

                /*if ( m_tableCodesVisibles != null && objetFils is IObjetHierarchiqueACodeHierarchique )
                 *      bVoir = m_tableCodesVisibles.Contains(((IObjetHierarchiqueACodeHierarchique)objetFils).CodeSystemeComplet);*/
                if (m_bAutoriserFilsDesAutorises && !bVoir)
                {
                    if (objetParent != null && IsInFiltre(objetParent))
                    {
                        if (objetFils is IObjetHierarchiqueACodeHierarchique && m_tableCodesVisibles != null)
                        {
                            m_tableCodesVisibles.Add(((IObjetHierarchiqueACodeHierarchique)objetFils).CodeSystemeComplet, true);
                        }
                        bVoir = true;
                    }
                }
                if (bVoir)
                {
                    TreeNode node = new TreeNode();
                    FillNode(node, objetFils);

                    nodes.Add(node);
                    node.Nodes.Add(new TreeNode("__"));                    //Noeud bidon
                    if (!IsInFiltre(objetFils))
                    {
                        node.ForeColor = ForeColorNonSelectionnable;
                        node.Expand();
                    }
                }
            }
        }
示例#2
0
        /// //////////////////////////////////////////////////////////////
        public CResultAErreur Supprimer(ArrayList listeElementsASupprimer)
        {
            using (CWaitCursor waiter = new CWaitCursor())
            {
                CResultAErreur result = CResultAErreur.True;
                if (listeElementsASupprimer.Count <= 0)
                {
                    return(result);
                }

                string strListeIds = "";
                CObjetDonneeAIdNumeriqueAuto objetPourSuppressionGlobale = null;
                //Crée une liste de tous les ids éléments  à supprimer
                try
                {
                    foreach (CObjetDonneeAIdNumeriqueAuto objet in listeElementsASupprimer)
                    {
                        strListeIds += objet.Id.ToString() + ",";
                        if (objetPourSuppressionGlobale == null)
                        {
                            objetPourSuppressionGlobale = objet;
                        }
                    }
                    strListeIds = strListeIds.Substring(0, strListeIds.Length - 1);

                    using (CContexteDonnee contexteToDelete = new CContexteDonnee(objetPourSuppressionGlobale.ContexteDonnee.IdSession, true, false))
                    {
                        result = contexteToDelete.SetVersionDeTravail(objetPourSuppressionGlobale.ContexteDonnee.IdVersionDeTravail, true);
                        if (!result)
                        {
                            return(result);
                        }
                        contexteToDelete.BeginModeDeconnecte();


                        CListeObjetsDonnees liste = new CListeObjetsDonnees(contexteToDelete,
                                                                            objetPourSuppressionGlobale.GetType(), false);

                        liste.Filtre = new CFiltreData(
                            objetPourSuppressionGlobale.GetChampId() + " in (" +
                            strListeIds + ")");

                        result = CObjetDonneeAIdNumeriqueAuto.Delete(liste);
                        if (!result)
                        {
                            contexteToDelete.CancelModifsEtEndModeDeconnecte();
                            result.EmpileErreur(I.T("Error while deleting element|30032"));
                            return(result);
                        }
                        else
                        {
                            result = contexteToDelete.CommitModifsDeconnecte();
                        }
                    }
                }
                catch
                {
                    foreach (CObjetDonnee objet in listeElementsASupprimer)
                    {
                        result = objet.Delete();
                        if (!result)
                        {
                            CSc2iWin32DataClient.ContexteCourant.CancelModifsEtEndModeDeconnecte();
                            result.EmpileErreur(I.T("Error while deleting element|30032"));
                            break;
                        }
                    }
                    if (result)
                    {
                        result = CSc2iWin32DataClient.ContexteCourant.CommitModifsDeconnecte();
                    }
                }
                return(result);
            }
        }