Example #1
0
 public bool ChildItems(TreeViewItem Ci, string DisplayName, System.Guid TargetID, System.Guid SourceID)
 {
     try
     {
         bool r2 = false;
         bool r  = false;
         foreach (TreeViewItem CCi in Ci.Items)
         {
             if (CCi.Tag.ToString() == SourceID.ToString())
             {
                 TreeViewItem Ni = new TreeViewItem();
                 Ni.Header = DisplayName;
                 Ni.Tag    = TargetID.ToString();
                 //Trace.WriteLine("В ConfClass добавляем к " + CCi.Header + " дочернюю ноду - " + Ni.Header);
                 CCi.Items.Add(Ni);
                 //Trace.WriteLine("After === В ConfClass добавляем к " + CCi.Header + " дочернюю ноду - " + Ni.Header);
                 r2 = true;
             }
             else if (CCi.HasItems)
             {
                 //Trace.WriteLine("Создаем вложенный ConfClass для  " + CCi.Header);
                 ConfClass CClass = new ConfClass();
                 r2 = CClass.ChildItems(CCi, DisplayName, TargetID, SourceID);
             }
             if (r2)
             {
                 r = true;
             }
         }
         return(r);
     }
     catch (Exception e)
     {
         System.Windows.MessageBox.Show(DateTime.Now + " : " + "Error in ConfClass.ChildItems : " + e.Message);
         return(false);
     }
 }
Example #2
0
        public static void Now(EnterpriseManagementGroup emg, ManagementPackClass objectClass, ManagementPackRelationship relationClass, TreeView LocalTreeView)
        {
            //System.Windows.MessageBox.Show("FillTreeView Call");
            //return;

            //Trace.WriteLine(DateTime.Now + " : " + "Enter FillTreeView.Now");
            ConfClass CC = new ConfClass();

            //Delete old Items
            LocalTreeView.Items.Clear();

            //=========================================================================================================
            //Create Root
            //=========================================================================================================
            try
            {
                List <EnterpriseManagementObject> arr = new List <EnterpriseManagementObject>();
                //Создаем массив локаций arr
                foreach (var loc in emg.EntityObjects.GetObjectReader <EnterpriseManagementObject>(objectClass, ObjectQueryOptions.Default))
                {
                    //Trace.WriteLine("Перебираем локации " + loc.DisplayName);
                    var parentloc = emg.EntityObjects.GetRelationshipObjectsWhereTarget <EnterpriseManagementObject>(loc.Id, relationClass, DerivedClassTraversalDepth.None, TraversalDepth.OneLevel, ObjectQueryOptions.Default);
                    // Ищем корневые узлы
                    if (parentloc.Count == 0)
                    {
                        //Trace.WriteLine("Нашли Root " + loc.DisplayName);
                        TreeViewItem Root = new TreeViewItem();
                        Root.Header = loc.DisplayName;
                        Root.Tag    = loc.Id;
                        LocalTreeView.Items.Add(Root);
                    }
                    else
                    {
                        arr.Add(loc);
                    }
                }
                //Trace.WriteLine(DateTime.Now + " : " + "Массив некорневых узлов arr.Count= " + arr.Count);
                if (arr.Count > 0)
                {
                    //==========foreach locations========================
                    int k = 0;
                    do
                    {
                        //Trace.WriteLine("k=" + k + " arr.Count = " + arr.Count);
                        //============= search in arr parent elements ================
                        foreach (EnterpriseManagementRelationshipObject <EnterpriseManagementObject> obj in emg.EntityObjects.GetRelationshipObjectsWhereTarget <EnterpriseManagementObject>(arr[k].Id, relationClass, DerivedClassTraversalDepth.None, TraversalDepth.OneLevel, ObjectQueryOptions.Default))
                        {
                            //Trace.WriteLine("Элемент массива " + arr[k].DisplayName + " - Нашли родительский элемент " + obj.SourceObject.DisplayName);

                            //Ищем среди существующих TreeViewItems родительский элемент Pi и цепляем к нему новый
                            foreach (TreeViewItem Pi in LocalTreeView.Items)
                            {
                                if ((System.Guid)Pi.Tag == obj.SourceObject.Id)
                                {
                                    TreeViewItem Ci = new TreeViewItem();
                                    Ci.Header = obj.TargetObject.DisplayName;
                                    Ci.Tag    = obj.TargetObject.Id;
                                    //Trace.WriteLine("В теле добавляем к " + Pi.Header + " дочернюю ноду - " + Ci.Header);
                                    Pi.Items.Add(Ci);
                                    //Удаляем обработанный элемент из массива
                                    EnterpriseManagementObject delItem = emg.EntityObjects.GetObject <EnterpriseManagementObject>(new Guid(arr[k].Id.ToString()), ObjectQueryOptions.Default);
                                    arr.Remove(delItem);
                                }
                                else if (Pi.HasItems)
                                {
                                    if (CC.ChildItems(Pi, obj.TargetObject.DisplayName, obj.TargetObject.Id, obj.SourceObject.Id))
                                    {
                                        EnterpriseManagementObject delItem = emg.EntityObjects.GetObject <EnterpriseManagementObject>(new Guid(arr[k].Id.ToString()), ObjectQueryOptions.Default);
                                        arr.Remove(delItem);
                                    }
                                }
                            }
                        }
                        if (k >= arr.Count - 1)
                        {
                            k = 0;
                        }
                        else
                        {
                            k++;
                        }
                    } while (arr.Count > 0);
                }
                //Trace.WriteLine(DateTime.Now + " : " + "End void " + LocalTreeView.Items.Count);
            }
            catch (Exception e)
            { System.Windows.MessageBox.Show(DateTime.Now + " : " + "Error in FillTreeview : " + e.Message); }
        }