Example #1
0
        /// <summary>
        /// 把子节点添加给父节点
        /// </summary>
        /// <param name="treeEntity"></param>
        public static TreeEntity addToParentEntity(TreeEntity treeEntity,int deviceId)
        {
            List<TreeEntity> entityStrs = getSubTreeEntities(treeEntity,deviceId);
            if (entityStrs.Count > 0)
            {
                foreach (var te in entityStrs)
                {
                    //。添加进来
                    treeEntity.SubTreeEntities.Add(te);
                    te.parentTreeEntity = treeEntity;
                    TreeEntity tempTreeEntity = new TreeEntity(treeEntity.PropertyId);
                    tempTreeEntity.parentTreeEntity = treeEntity.parentTreeEntity;
                    tempTreeEntity.ParentTreePath = treeEntity.ParentTreePath;
                    tempTreeEntity.SubTreeEntities = treeEntity.SubTreeEntities;

                    te.ParentTreePath.Add(tempTreeEntity);
                    while (tempTreeEntity.parentTreeEntity != null)
                    {
                        tempTreeEntity = tempTreeEntity.parentTreeEntity;
                        te.ParentTreePath.Add(tempTreeEntity);
                    }

                    //如果该节点与父路径中的某个节点重复。则不可添加
                    if (!isEntityAlreadyInParent(te))
                        return te;

                }
            }
            //遍历子节点
            foreach (var te in entityStrs)
            {
                var entity = addToParentEntity(te,deviceId);
                if (entity != null)
                    return entity;
            }
            return null;
        }
Example #2
0
 /// <summary>
 /// 得到每个节点的子节点
 /// </summary>
 /// <param name="treeEntity"></param>
 /// <returns></returns>
 //public static List<TreeEntity> getSubTreeEntities(TreeEntity treeEntity)
 //{
 //    using (var context = new AnnonContext())
 //    {
 //        try
 //        {
 //            int propertyId = Convert.ToInt32(treeEntity.PropertyId);
 //            var propertyIds = context.PropertyConstraints
 //                .Where(s => s.PropertyID == propertyId)
 //                .Select(s => s.InfluencedPtyID)
 //                .Distinct();
 //            List<TreeEntity> treeEntities = new List<TreeEntity>();
 //            foreach (var ptyId in propertyIds)
 //            {
 //                TreeEntity te = new TreeEntity(ptyId.ToString());
 //                te.parentTreeEntity = treeEntity;
 //                treeEntities.Add(te);
 //            }
 //            return treeEntities;
 //        }
 //        catch (Exception e)
 //        {
 //            return null;
 //        }
 //    }
 //}
 /// <summary>
 /// 得到每个节点的子节点
 /// </summary>
 /// <param name="treeEntity"></param>
 /// <param name="deviceId"></param>
 /// <returns></returns>
 public static List<TreeEntity> getSubTreeEntities(TreeEntity treeEntity,int deviceId)
 {
     using (var context = new AnnonContext())
     {
         try
         {
             var propertyIds = context.CatalogConstraints
                 .Where(s => s.PropertyName == treeEntity.PropertyId
                 &&s.DeviceId==deviceId)
                 .Select(s => s.InfluencedPropertyName)
                 .Distinct();
             List<TreeEntity> treeEntities = new List<TreeEntity>();
             foreach (var ptyId in propertyIds)
             {
                 TreeEntity te = new TreeEntity(ptyId.ToString());
                 te.parentTreeEntity = treeEntity;
                 treeEntities.Add(te);
             }
             return treeEntities;
         }
         catch (Exception e)
         {
             return null;
         }
     }
 }
Example #3
0
        /// <summary>
        /// 判断一个节点能否加入到当前的节点的子节点中
        /// </summary>
        /// <param name="treeEntity"></param>
        /// <param name="entity"></param>
        /// <returns></returns>
        public static bool isEntityAlreadyInParent(TreeEntity entity)
        {
            try
            {
                //如果是根节点,则返回true,
                if (entity.parentTreeEntity == null)
                    return true;

                //遍历父节点
                foreach (var tpE in entity.ParentTreePath)
                {
                    //如果父路径已存在该节点。则返回false
                    if (tpE.PropertyId.Equals(entity.PropertyId))
                        return false;
                }
                return true;
            }
            catch (Exception e)
            {
                return false;
            }
        }