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)); }
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); }
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); } } }