Esempio n. 1
0
        public override bool Equals(object obj)
        {
            RelationBinding relationBinding = obj as RelationBinding;

            if (relationBinding != null && relationBinding.dataMember == this.dataMember && (relationBinding.dataSource == this.dataSource && relationBinding.checkedMember == this.checkedMember) && (relationBinding.displayMember == this.displayMember && relationBinding.valueMember == this.valueMember && relationBinding.parentMember == this.parentMember))
            {
                return(true);
            }
            return(base.Equals(obj));
        }
Esempio n. 2
0
        object ICloneable.Clone()
        {
            RelationBinding relationBinding = new RelationBinding();

            relationBinding.dataMember    = this.dataMember;
            relationBinding.dataSource    = this.dataSource;
            relationBinding.displayMember = this.displayMember;
            relationBinding.valueMember   = this.valueMember;
            relationBinding.parentMember  = this.parentMember;

            return(relationBinding);
        }
Esempio n. 3
0
        private void InitilizeRelationBinding()
        {
            ClearRelationBinding();
            for (int i = 0; i < this.TreeView.RelationBindings.Count; i++)
            {
                RelationBinding relation = this.TreeView.RelationBindings[i];
                relation.PropertyChanged += new PropertyChangedEventHandler(relation_PropertyChanged);

                CurrencyManager cm = null;
                if (relation.DataSource is BindingSource)
                {
                    cm = ((BindingSource)relation.DataSource).CurrencyManager;
                }

                if (cm == null && relation.DataSource != null)
                {
                    cm = this.TreeView.BindingContext[relation.DataSource, relation.DataMember] as CurrencyManager;
                }

                if (cm != null)
                {
                    WireEvents(cm);

                    PropertyDescriptorCollection properties = null;
                    if (i == 0)
                    {
                        if (((ICurrencyManagerProvider)this.TreeView.ListSource).CurrencyManager != null)
                        {
                            properties = ((ICurrencyManagerProvider)this.TreeView.ListSource).CurrencyManager.GetItemProperties();
                        }
                    }
                    else
                    {
                        properties = this.relationBindings[i - 1].GetItemProperties();
                    }

                    PropertyDescriptor descriptor = null;
                    if (properties != null)
                    {
                        descriptor = properties.Find(relation.ParentMember, true);
                    }

                    if (descriptor == null)
                    {
                        return;
                    }
                    this.TreeView.BoundDescriptors[i].ParentDescriptor = descriptor;

                    properties = cm.GetItemProperties();
                    TreeNodeDescriptor relationDescriptor = new TreeNodeDescriptor();

                    string             childPath = relation.ChildMember.Split('\\')[0];
                    string[]           names     = childPath.Split('.');
                    PropertyDescriptor pd        = properties.Find(names[0], true);
                    if (pd != null)
                    {
                        if (names.Length > 1)
                        {
                            relationDescriptor.SetChildDescriptor(pd, childPath);
                        }
                        else
                        {
                            relationDescriptor.ChildDescriptor = pd;
                        }
                    }

                    string valuePath = relation.ValueMember.Split('\\')[0];
                    names = valuePath.Split('.');
                    pd    = properties.Find(names[0], true);
                    if (pd != null)
                    {
                        if (names.Length > 1)
                        {
                            relationDescriptor.SetValueDescriptor(pd, valuePath);
                        }
                        else
                        {
                            relationDescriptor.ValueDescriptor = pd;
                        }
                    }

                    string displayPath = relation.DisplayMember.Split('\\')[0];
                    names = displayPath.Split('.');
                    pd    = properties.Find(names[0], true);
                    if (pd != null)
                    {
                        if (names.Length > 1)
                        {
                            relationDescriptor.SetDisplaytDescriptor(pd, valuePath);
                        }
                        else
                        {
                            relationDescriptor.DisplayDescriptor = pd;
                        }
                    }



                    this.TreeView.BoundDescriptors.Add(relationDescriptor);

                    AvlTree <RadTreeNode> nodes = new AvlTree <RadTreeNode>(new ChildComparer());
                    this.relationIndex.Add(nodes);
                    this.relationBindings.Add(cm);
                    this.relationLevelLoaded.Add(false);
                }
            }
        }