public void Initialize(MemberData member)
        {
            List<PropertyItem> list = new List<PropertyItem>();
            if (member != null)
            {
                foreach (PropertyData pair in member.MemberProperties)
                {
                    PropertyItem item = new PropertyItem();

                    String caption = pair.Name;
                    if (caption.StartsWith("-") && caption.EndsWith("-"))
                        caption = caption.Trim('-');
                    item.Property = caption;

                    if (pair.Value != null)
                    {
                        item.Value = pair.Value.ToString();
                    }
                    else
                    {
                        item.Value = String.Empty;
                    }
                    list.Add(item);
                }
            }
            PropertiesCtrl.Initialize(list);
        }
 public MemberLiteTreeNode(MemberData info)
     : base()
 {
     Info = info;
     Icon = UriResources.Images.MemberSmall16;
     MemberVisualizationType = MemberVisualizationTypes.Caption;
 }
 public MemberItemControl(MemberData info)
 {
     if (info == null)
         throw new ArgumentNullException("info");
     
     m_Info = info;
     Text = info.Caption;
     
     Icon = UriResources.Images.Member16;
 }
        /// <summary>
        /// Добавляет элемент в иерархию MemberNodeInfo
        /// </summary>
        /// <param name="member">Member, информация о котором должна быть добавлена в иерархию</param>
        public OlapMemberInfo AddMemberToHierarchy(MemberData info)
        {
            //Задача: Добавить OlapMemberInfo в иерархию 
            //Возможные варианты:
            //	- если элемент в иерархии уже есть, то выход
            //	- если элемента в иерархии еще нет, то ищем его родителя.
            //	  Если Родитель задан, Но родителя в иерархии тоже нет, то добавляем родителя и ищем дальше следующего родителя рекурсивно
            //	  Если родитель не задан, то элемент является корневым (одним из корневых) в иерархии	
            //Таким образом в иерархию добавляется не только элемент, но и полностью ветка его родителей (если ее не было)

            //Ищем информацию о данном члене измерения в загруженной иерархии
            OlapMemberInfo memberInfo = FindMember(info.UniqueName);

            //Если элемент в иерархии не найден, то его нужно добавить
            if (memberInfo == null)
            {
                //Создаем OlapMemberInfo
                memberInfo = new OlapMemberInfo(info);
                // Подписываемся у каждого добавленного элемента на событие - изменение состояния всей иерархии
                // данное событие генерит элемент, послуживший инициатором рекурсивного обновления состояний в дереве
                memberInfo.HierarchyStateChanged += new StateChangedEventHandler(memberInfo_HierarchyStateChanged);

                //OlapMemberInfo, который будем использовать для формирования ветки ....->Дед->Отец->Изначально добавляемый мембер
                //Ветку будем формировать при поиске родительских элементов
                OlapMemberInfo addedHierarchy = memberInfo;

                bool foundParentHierarchy = true;
                while (foundParentHierarchy)
                {
                    String parentUniqueName = String.Empty;
                    if (addedHierarchy.Info != null)
                    {
                        PropertyData prop = addedHierarchy.Info.GetMemberProperty(MemberData.PARENT_UNIQUE_NAME_PROPERTY);
                        if (prop != null && prop.Value != null)
                        {
                            parentUniqueName = prop.Value.ToString();
                        }
                    }

                    if (String.IsNullOrEmpty(parentUniqueName))
                    {
                        // В случае если например в мерархию загружены элементы уровня 1 и потом догружается элемент All, 
                        // то получится что в коллекции корневых элементов находятся элементы уровней 0 и 1. Чтобы такого не произошло
                        // после добавления просматриваем коллекцию корневых элементов и проверяем не является данный добавленный элемент родителем для кого-нибудь из уже имеющихся
                        // Если дочерние обнаружены, то они удаляются из корневых и добавляются в дочерние к данному элементу.

                        // Ищем среди корневых элементы дочерние для данного
                        Dictionary<String, OlapMemberInfo> toDelete = new Dictionary<string, OlapMemberInfo>();
                        foreach(var child in Children.Values)
                        {
                            String pun = String.Empty;
                            if (child.Info != null)
                            {
                                PropertyData prop = child.Info.GetMemberProperty(MemberData.PARENT_UNIQUE_NAME_PROPERTY);
                                if (prop != null && prop.Value != null)
                                {
                                    pun = prop.Value.ToString();
                                }
                            }
                            if (!String.IsNullOrEmpty(pun) && pun == addedHierarchy.UniqueName)
                            {
                                toDelete.Add(child.UniqueName, child);
                            }
                        }

                        // Удаляем из коллекции корневых дочерние элементы
                        foreach (var del in toDelete)
                        {
                            Children.Remove(del.Key);
                        }

                        // Добавляем в коллекцию корневых элементов
                        AddChild(addedHierarchy);

                        // Добавляем в дочерние те элементы, которые были до этого корневыми
                        foreach (var del in toDelete)
                        {
                            addedHierarchy.AddChild(del.Value);
                        }

                        foundParentHierarchy = false;
                        break;
                    }
                    else
                    {
                        OlapMemberInfo parentOlapMemberInfo = null;
                        parentOlapMemberInfo = FindMember(parentUniqueName);

                        //если родитель найден, то добавляем ему нашу сформированную ветку в дочерние
                        if (parentOlapMemberInfo != null)
                        {
                            parentOlapMemberInfo.AddChild(addedHierarchy);

                            foundParentHierarchy = false;
                            break;
                        }
                        else
                        {
                            //Добавляем в коллекцию корневых элементов
                            AddChild(addedHierarchy);
                            foundParentHierarchy = false;
                            break;
                            //throw new Exception(String.Format("Родитель для элемента {0} не найден в иерархии", info.Member.UniqueName));

                            ////Создаем OlapMemberInfo для родителя
                            //parentOlapMemberInfo = new OlapMemberInfo(addedHierarchy.Member.Parent, Mode, addedHierarchy.Member.Parent.ChildCount);
                            ////Добавляем ненайденного родителя в ветку, которую нужно добавить в иерархию
                            //parentOlapMemberInfo.AddChildOlapMemberInfo(addedHierarchy);

                            ////В этом случае мы иерархию строим руками и нужно явно добавлять в коллекцию memberInfoHierarchy.AllMembers
                            //memberInfoHierarchy.AllMembers[addedHierarchy.UniqueName] = addedHierarchy;

                            //addedHierarchy = parentOlapMemberInfo;

                        }
                    }
                }
            }

            return memberInfo;
        }
		public RootOlapMemberInfo(MemberData member)
            : base (member)
		{
		}
コード例 #6
0
        internal static CellSetData Deserialize(XmlReader reader)
        {
            if (reader != null)
            {
                try
                {
                    if (!(reader.NodeType == XmlNodeType.Element &&
                          reader.Name == XML_CellSetData))
                    {
                        reader.ReadToFollowing(XML_CellSetData);
                    }

                    CellSetData target = new CellSetData();

                    // Начало - CellSetData
                    reader.ReadStartElement(XML_CellSetData);

                    var data = Jayrock.Json.Conversion.JsonConvert.Import(reader.Value) as JsonArray;

                    // Имя куба
                    target.CubeName = data[0] != null ? data[0].ToString() : String.Empty;

                    // Соединение
                    var connection = data.GetArray(1);
                    target.Connection.ConnectionID     = connection[0].ToString();
                    target.Connection.ConnectionString = connection[1].ToString();

                    reader.Read();

                    // Оси
                    reader.ReadStartElement("Axes");

                    var axes = Jayrock.Json.Conversion.JsonConvert.Import(reader.Value) as JsonArray;
                    for (int a = 0; a < axes.Count; a++)
                    {
                        var      axis_data = axes.GetArray(a);
                        AxisData axis      = new AxisData();
                        axis.AxisNum = a;
                        // Название оси
                        axis.Name = axis_data[0].ToString();
                        // Позиции
                        var positions = axis_data.GetArray(1);

                        for (int p = 0; p < positions.Count; p++)
                        {
                            var          position_data = positions.GetArray(p);
                            PositionData pos           = new PositionData();

                            for (int m = 0; m < position_data.Count; m++)
                            {
                                var member_data           = position_data.GetArray(m);
                                PositionMemberData member = new PositionMemberData(Convert.ToInt32(member_data[0]));
                                member.DrilledDown = Convert.ToBoolean(member_data[1]);
                                pos.Members.Add(member);
                            }

                            axis.Positions.Add(pos);
                        }

                        // Названаия свойств
                        var PropertiesNames = axis_data.GetArray(2);
                        // Названаия пользовательских свойств
                        var MemberPropertiesNames = axis_data.GetArray(3);
                        // Элементы оси
                        var members = axis_data.GetArray(4);

                        // Варианты стиля
                        var equalsMemberProps = axis_data.GetArray(5);
                        // Описание стиля
                        var equalsMemberPropertiesNames = axis_data.GetArray(6);

                        for (int m = 0; m < members.Count; m++)
                        {
                            var member_data             = members.GetArray(m);
                            var Settings                = member_data.GetArray(0);
                            var PropertiesValues        = member_data.GetArray(1);
                            var MemberPropertiesValues  = member_data.GetArray(2);
                            int MemberPropertiesStyleId = Convert.ToInt32(member_data[3]);

                            MemberData member = new MemberData();
                            int        x      = 0;
                            member.Caption              = Settings[x++].ToString();
                            member.Description          = Settings[x++].ToString();
                            member.Name                 = Settings[x++].ToString();
                            member.UniqueName           = Settings[x++].ToString();
                            member.ChildCount           = Convert.ToInt32(Settings[x++].ToString());
                            member.DrilledDown          = Convert.ToBoolean(Settings[x++].ToString());
                            member.LevelDepth           = Convert.ToInt32(Settings[x++].ToString());
                            member.LevelName            = Settings[x++].ToString();
                            member.HierarchyUniqueName  = Settings[x++].ToString();
                            member.ParentSameAsPrevious = Convert.ToBoolean(Settings[x++].ToString());

                            for (int j = 0; j < PropertiesValues.Length; j++)
                            {
                                member.Properties.Add(new PropertyData(PropertiesNames[j].ToString(), ConvertFromJson(PropertiesValues[j])));
                            }
                            for (int j = 0; j < MemberPropertiesValues.Length; j++)
                            {
                                member.MemberProperties.Add(new PropertyData(MemberPropertiesNames[j].ToString(), ConvertFromJson(MemberPropertiesValues[j])));
                            }

                            var member_equalsPropsValues = equalsMemberProps.GetArray(MemberPropertiesStyleId);
                            for (int k = 0; k < equalsMemberPropertiesNames.Length; k++)
                            {
                                var propName = equalsMemberPropertiesNames[k].ToString();
                                member.MemberProperties.Add(new PropertyData(propName, ConvertFromJson(member_equalsPropsValues[k])));
                            }

                            axis.Members.Add(axis.Members.Count, member);
                        }

                        target.Axes.Add(axis);
                    }

                    reader.Read();

                    if (reader.NodeType == XmlNodeType.EndElement &&
                        reader.Name == "Axes")
                    {
                        reader.ReadEndElement();
                    }

                    // Ячейки
                    reader.ReadStartElement("Cells");

                    var strData = reader.Value;
                    target.DeserializeData(strData);
                    reader.Read();

                    if (reader.NodeType == XmlNodeType.EndElement &&
                        reader.Name == "Cells")
                    {
                        reader.ReadEndElement();
                    }
                    // Конец - CellSetData
                    if (reader.NodeType == XmlNodeType.EndElement &&
                        reader.Name == XML_CellSetData)
                    {
                        reader.ReadEndElement();
                    }
                    return(target);
                }
                catch (XmlException)
                {
                    throw;
                }
            }
            return(null);
        }
コード例 #7
0
 public MemberDataWrapper(MemberData member)
 {
     Member = member;
 }
コード例 #8
0
        private MemberInfo CreateMemberInfo(MemberData member)
        {
            if (member == null)
                return null;

            MemberInfo info = new MemberInfo();
            InitMemberInfo(info, member);

            return info;
        }    
		void ShowMemberAttributes(MemberData member)
		{
			if (member != null)
			{
				ModalDialog dlg = new ModalDialog() { Width = 400, Height = 300, DialogStyle = ModalDialogStyles.OK };
				MemberPropertiesControl properties = new MemberPropertiesControl();
				properties.Initialize(member);
				dlg.Content = properties;
				dlg.Caption = Localization.CustomPropertiesDialog_Caption;
				Panel panel = GetRootPanel(this);
				if (panel != null)
				{
					panel.Children.Add(dlg.Dialog.PopUpControl);
				}
				ShowDialog(dlg);
			}
		}
 public static long GetRealChildrenCount(MemberData member)
 {
     //Количество дочерних узлов в кубе
     long childrenCount = 0;
     if (member != null)
     {
         PropertyData prop = member.GetMemberProperty(CHILDREN_COUNT_PROPERTY);
         if (prop != null)
         {
             try
             {
                 childrenCount = Convert.ToInt64(prop.Value);
             }
             catch (Exception)
             {
                 childrenCount = 0;
             }
         }
     }
     return childrenCount;
 }
 /// <summary>
 /// Конструктор объекта, описавающего состояние элемента
 /// </summary>
 /// <param name="uniqueName">Уникальное имя мембера</param>
 /// <param name="caption">Заголовок мембера</param>
 /// <param name="state">состояние</param>
 public MemberChoiceSettings(MemberData info, SelectStates state)
 {
     m_Info = info;
     m_SelectState = state;
 }
        /// <summary>
        /// Формирует описание для элемента
        /// </summary>
        /// <param name="member"></param>
        /// <returns></returns>
        public MemberData CreateMemberDescription(Member member)
        {
            if (member == null)
                return null;
            MemberData info = new MemberData();
            info.Caption = member.Caption;
            info.ChildCount = member.ChildCount;
            info.Description = member.Description;
            info.DrilledDown = member.DrilledDown;
            info.LevelDepth = member.LevelDepth;
            info.LevelName = member.LevelName;
            info.Name = member.Name;
            info.ParentSameAsPrevious = member.ParentSameAsPrevious;

            String hierarchyUniqueName = GetMemberPropertyValue(member, "HIERARCHY_UNIQUE_NAME");
            if (hierarchyUniqueName != null)
            {
                info.HierarchyUniqueName = hierarchyUniqueName;
            }
            else
            {
                if (m_HierarchiesToLevelsCache.ContainsKey(info.LevelName))
                {
                    info.HierarchyUniqueName = m_HierarchiesToLevelsCache[info.LevelName];
                }
                else
                {
                    try
                    {
                        info.HierarchyUniqueName = member.ParentLevel.ParentHierarchy.UniqueName;
                    }
                    catch (System.InvalidOperationException)
                    {
                        info.HierarchyUniqueName = String.Empty;
                    }

                    m_HierarchiesToLevelsCache[info.LevelName] = info.HierarchyUniqueName;
                }
            }

            info.UniqueName = member.UniqueName;

            // Свойства
            foreach (Property prop in member.Properties)
            {
                PropertyData property = new PropertyData(prop.Name, null);
                try
                {
                    property.Value = prop.Value;
                }
                catch (Microsoft.AnalysisServices.AdomdClient.AdomdErrorResponseException ex)
                {
                    property.Value = ex.ToString();
                }
                info.Properties.Add(property);
            }

            foreach (MemberProperty mp in member.MemberProperties)
            {
                PropertyData property = new PropertyData(mp.Name, null);
                try
                {
                    property.Value = mp.Value;
                }
                catch (Microsoft.AnalysisServices.AdomdClient.AdomdErrorResponseException ex)
                {
                    property.Value = ex.ToString();
                }
                info.MemberProperties.Add(property);
            }
            return info;
        }
 public MemberDataWrapper(MemberData member)
 {
     Member = member;
 }
コード例 #14
0
        internal static CellSetData Deserialize(XmlReader reader)
        {
            if (reader != null)
            {
                try
                {
                    if (!(reader.NodeType == XmlNodeType.Element &&
                        reader.Name == XML_CellSetData))
                    {
                        reader.ReadToFollowing(XML_CellSetData);
                    }

                    CellSetData target = new CellSetData();

                    // Начало - CellSetData
                    reader.ReadStartElement(XML_CellSetData);

                    var data = Jayrock.Json.Conversion.JsonConvert.Import(reader.Value) as JsonArray;
                    
                    // Имя куба
                    target.CubeName = data[0] != null ? data[0].ToString() : String.Empty;

                    // Соединение
                    var connection = data.GetArray(1);
                    target.Connection.ConnectionID = connection[0].ToString();
                    target.Connection.ConnectionString = connection[1].ToString();

                    reader.Read();

                    // Оси
                    reader.ReadStartElement("Axes");

                    var axes = Jayrock.Json.Conversion.JsonConvert.Import(reader.Value) as JsonArray;
                    for (int a = 0; a < axes.Count; a++)
                    {
                        var axis_data = axes.GetArray(a);
                        AxisData axis = new AxisData();
                        axis.AxisNum = a;
                        // Название оси
                        axis.Name = axis_data[0].ToString();
                        // Позиции 
                        var positions = axis_data.GetArray(1);

                        for (int p = 0; p < positions.Count; p++)
                        {
                            var position_data = positions.GetArray(p);
                            PositionData pos = new PositionData();

                            for (int m = 0; m < position_data.Count; m++)
                            {
                                var member_data = position_data.GetArray(m);
                                PositionMemberData member = new PositionMemberData(Convert.ToInt32(member_data[0]));
                                member.DrilledDown = Convert.ToBoolean(member_data[1]);
                                pos.Members.Add(member);
                            }

                            axis.Positions.Add(pos);
                        }

                        // Названаия свойств
                        var PropertiesNames = axis_data.GetArray(2);
                        // Названаия пользовательских свойств
                        var MemberPropertiesNames = axis_data.GetArray(3);
                        // Элементы оси
                        var members = axis_data.GetArray(4);

                        // Варианты стиля
                        var equalsMemberProps = axis_data.GetArray(5);
                        // Описание стиля
                        var equalsMemberPropertiesNames = axis_data.GetArray(6);

                        for (int m = 0; m < members.Count; m++)
                        {
                            var member_data = members.GetArray(m);
                            var Settings = member_data.GetArray(0);
                            var PropertiesValues = member_data.GetArray(1);
                            var MemberPropertiesValues = member_data.GetArray(2);
                            int MemberPropertiesStyleId = Convert.ToInt32(member_data[3]);

                            MemberData member = new MemberData();
                            int x = 0;
                            member.Caption = Settings[x++].ToString();
                            member.Description = Settings[x++].ToString();
                            member.Name = Settings[x++].ToString();
                            member.UniqueName = Settings[x++].ToString();
                            member.ChildCount = Convert.ToInt32(Settings[x++].ToString());
                            member.DrilledDown = Convert.ToBoolean(Settings[x++].ToString());
                            member.LevelDepth = Convert.ToInt32(Settings[x++].ToString());
                            member.LevelName = Settings[x++].ToString();
                            member.HierarchyUniqueName = Settings[x++].ToString();
                            member.ParentSameAsPrevious = Convert.ToBoolean(Settings[x++].ToString());

                            for (int j = 0; j < PropertiesValues.Length; j++)
                            {
                                member.Properties.Add(new PropertyData(PropertiesNames[j].ToString(), ConvertFromJson(PropertiesValues[j])));
                            }
                            for (int j = 0; j < MemberPropertiesValues.Length; j++)
                            {
                                member.MemberProperties.Add(new PropertyData(MemberPropertiesNames[j].ToString(), ConvertFromJson(MemberPropertiesValues[j])));
                            }

                            var member_equalsPropsValues = equalsMemberProps.GetArray(MemberPropertiesStyleId);
                            for (int k = 0; k < equalsMemberPropertiesNames.Length; k++)
                            {
                                var propName = equalsMemberPropertiesNames[k].ToString();
                                member.MemberProperties.Add(new PropertyData(propName, ConvertFromJson(member_equalsPropsValues[k])));
                            }

                            axis.Members.Add(axis.Members.Count, member);
                        }

                        target.Axes.Add(axis);
                    }

                    reader.Read();

                    if (reader.NodeType == XmlNodeType.EndElement &&
                        reader.Name == "Axes")
                    {
                        reader.ReadEndElement();
                    }

                    // Ячейки
                    reader.ReadStartElement("Cells");

                    var strData = reader.Value;
                    target.DeserializeData(strData);
                    reader.Read();

                    if (reader.NodeType == XmlNodeType.EndElement &&
                        reader.Name == "Cells")
                    {
                        reader.ReadEndElement();
                    }
                    // Конец - CellSetData
                    if (reader.NodeType == XmlNodeType.EndElement &&
                        reader.Name == XML_CellSetData)
                    {
                        reader.ReadEndElement();
                    }
                    return target;
                }
                catch (XmlException)
                {
                    throw;
                }
            }
            return null;
        }
        public void Initialize(MemberData member)
        {
            m_PropertiesOwnerControl.Visibility = Visibility.Visible;
            m_PropertiesOwnerControl.Content = new MemberItemControl(member);
            List<PropertyItem> list = new List<PropertyItem>();
            if (member != null)
            {
                foreach (PropertyData pair in member.MemberProperties)
                {
                    PropertyItem item = new PropertyItem();

                    String caption = pair.Name;
                    if (caption.StartsWith("-") && caption.EndsWith("-"))
                        caption = caption.Trim('-');
                    item.Property = caption;

                    if (pair.Value != null)
                    {
                        item.Value = pair.Value.ToString();
                    }
                    else
                    {
                        item.Value = String.Empty;
                    }
                    list.Add(item);
                }
            }
            m_PropertiesList.Initialize(list);
        }
        public OlapMemberInfo(MemberData info)
        {
            if (info == null)
                throw new ArgumentNullException("info");

            this.m_Info = info;

            this.cubeChildrenCount = QueryProvider.GetRealChildrenCount(info);
        }
 void ShowMemberAttributes(MemberData member)
 {
     if (member != null)
     {
         ModalDialog dlg = new ModalDialog() { Width = 400, Height = 300, DialogStyle = ModalDialogStyles.OK };
         MemberPropertiesControl properties = new MemberPropertiesControl();
         properties.Initialize(member);
         dlg.Content = properties;
         dlg.Caption = Localization.CustomPropertiesDialog_Caption;
         Panel panel = GetRootPanel(this);
         if (panel != null)
         {
             panel.Children.Add(dlg.Dialog.PopUpControl);
         }
         // На время убираем контекстное меню сводной таблицы
         dlg.DialogClosed += new EventHandler<DialogResultArgs>(Dlg_DialogClosed);
         PivotGrid.UseContextMenu = false;
         dlg.Show();
     }
 }
コード例 #18
0
 private String GetMemberPropertyValue(MemberData member, String propName)
 {
     if (member == null || member.MemberProperties == null || String.IsNullOrEmpty(propName))
         return null;
     foreach(PropertyData prop in member.MemberProperties)
     if (prop.Name == propName && prop.Value != null)
     {
         return prop.Value.ToString();
     }
     return null;
 }
        void OlapDataLoader_DataLoaded(object sender, DataLoaderEventArgs e)
        {
            MemberTreeNode parentNode = null;

            UserSchemaWrapper<MemberChoiceQueryType, MemberTreeNode> wrapper = e.UserState as UserSchemaWrapper<MemberChoiceQueryType, MemberTreeNode>;
            if (wrapper != null)
            {
                if (wrapper.Schema != MemberChoiceQueryType.GetAscendants &&
                    wrapper.Schema != MemberChoiceQueryType.GetMember &&
                    wrapper.Schema != MemberChoiceQueryType.GetMembers &&
                    wrapper.Schema != MemberChoiceQueryType.LoadSetWithAscendants &&
                    wrapper.Schema != MemberChoiceQueryType.FindMembers)
                {
                    parentNode = wrapper.UserData;
                    if (parentNode != null)
                    {
                        parentNode.IsWaiting = false;
                    }
                    else
                    {
                        membersTree.IsWaiting = false;
                    }
                }
            }


            MetadataQuery args = e.UserState as MetadataQuery;

            if (e.Error != null)
            {
                if (args != null)
                {
                    if (args.QueryType == MetadataQueryType.GetLevels)
                        Levels_ComboBox.IsError = true;
                }

                LogManager.LogError(this, e.Error.ToString());
                return;
            }

            if (e.Result.ContentType == InvokeContentType.Error)
            {
                if (args != null)
                {
                    if (args.QueryType == MetadataQueryType.GetLevels)
                        Levels_ComboBox.IsError = true;
                }

                LogManager.LogError(this, e.Result.Content);
                return;
            }

            if (args != null)
            {
                switch (args.QueryType)
                {
                    case MetadataQueryType.GetLevels:
                        List<LevelInfo> levels = XmlSerializationUtility.XmlStr2Obj<List<LevelInfo>>(e.Result.Content);
                        InitLevelsList(levels);
                        break;
                    case MetadataQueryType.GetLevelProperties:
                        filterBuilder.Tree.IsWaiting = false;
                        List<LevelPropertyInfo> properties = XmlSerializationUtility.XmlStr2Obj<List<LevelPropertyInfo>>(e.Result.Content);
                        m_Properties = properties;

                        MemberTreeNode treeNode = membersTree.SelectedItem as MemberTreeNode;
                        if (treeNode != null)
                        {
                            m_CurrentMember = treeNode.MemberInfo.Info;
                        }
                        else
                        {
                            m_CurrentMember = null;
                        }
                        ShowMemberProperties();
                        filterBuilder.Initialize(properties);
                        m_LevelPropertiesIsLoaded = true;

                        break;
                }
            }

            if (wrapper != null)
            {
                switch (wrapper.Schema)
                {
                    //case MemberChoiceQueryType.GetRootMembersCount:
                    //    Service_GetRootMembersCountCompleted(e, parentNode);
                    //    break;
                    case MemberChoiceQueryType.GetRootMembers:
                        service_GetRootMembersCompleted(e, parentNode);
                        break;
                    case MemberChoiceQueryType.GetChildrenMembers:
                        Service_GetChildrenMembersCompleted(e, parentNode);
                        break;
                    case MemberChoiceQueryType.FindMembers:
                        FindMembers_InvokeCommandCompleted(e, parentNode);
                        break;
                    case MemberChoiceQueryType.GetAscendants:
                        GetAscendants_InvokeCommandCompleted(e);
                        break;
                    case MemberChoiceQueryType.GetMember:
                        GetMember_InvokeCommandCompleted(e);
                        break;
                    case MemberChoiceQueryType.LoadSetWithAscendants:
                        LoadSetWithAscendants_InvokeCommandCompleted(e);
                        break;
                    case MemberChoiceQueryType.GetMembers:
                        GetMembers_InvokeCommandCompleted(e);
                        break;
                }
            }
        }
コード例 #20
0
        private void InitMemberInfo(MemberInfo info, MemberData member)
        {
            if (info == null || member == null)
                return;

            info.Caption = member.Caption;
            info.ChildCount = member.ChildCount;
            info.Description = member.Description;
            info.DrilledDown = member.DrilledDown;
            info.LevelDepth = member.LevelDepth;
            info.LevelName = member.LevelName;
            info.Name = member.Name;
            info.ParentSameAsPrevious = member.ParentSameAsPrevious;

            info.HierarchyUniqueName = member.HierarchyUniqueName;
            info.Custom_Rollup = member.Custom_Rollup;
            info.Unary_Operator = member.Unary_Operator;

            info.UniqueName = member.UniqueName;

            // В коллекцию свойств добавляем Properties
            foreach (PropertyData pair in member.Properties)
            {
                String caption = pair.Name;
                if (!info.PropertiesDictionary.ContainsKey(caption))
                    info.PropertiesDictionary.Add(caption, pair.Value);
            }

            // В коллекцию свойств добавляем MemberProperties
            foreach (PropertyData pair in member.MemberProperties)
            {
                String caption = pair.Name;
                if (caption.StartsWith("-") && caption.EndsWith("-"))
                    caption = caption.Trim('-');

                if (!info.PropertiesDictionary.ContainsKey(caption))
                    info.PropertiesDictionary.Add(caption, pair.Value);
            }

            // Для вычисляемых элементов свойство DrilledDown работает неправильно. 
            // Признаком того, что это вычисляемый элемент считаем KEY0 == null. В этом случае сбрасываем DrilledDown
            if (info.PropertiesDictionary.ContainsKey(MemberInfo.KEY0_PROPERTY) &&
                info.PropertiesDictionary[MemberInfo.KEY0_PROPERTY] == null)
            {
                info.DrilledDown = false;                
            }
        }
 internal MemberItemControl(MemberData info, BitmapImage image)
     : this(info)
 {
     Icon = image;
 }