public void TestReferenceMember() { var obj = new ReferenceMember { Member = new StringMember { Member = "a" } }; var container = new NodeContainer(); var node = container.GetOrCreateNode(obj); Assert.AreEqual(obj, node.Content.Value); Assert.AreEqual(1, node.Children.Count); Assert.AreEqual(nameof(ReferenceMember.Member), node.Children.First().Name); Assert.AreEqual(obj.Member, node.Children.First().Content.Value); Assert.AreEqual(true, node.Children.First().Content.IsReference); Assert.IsInstanceOf <ObjectReference>(node.Children.First().Content.Reference); var reference = (ObjectReference)node.Children.First().Content.Reference; Assert.AreEqual(obj.Member, reference.ObjectValue); Assert.IsNotNull(reference.TargetNode); Assert.AreEqual(obj.Member, reference.TargetNode.Content.Value); node = reference.TargetNode; Assert.AreEqual(obj.Member, node.Content.Value); Assert.AreEqual(1, node.Children.Count); Assert.AreEqual(nameof(StringMember.Member), node.Children.First().Name); Assert.AreEqual(obj.Member.Member, node.Children.First().Content.Value); obj.Member.Member = "b"; Assert.AreEqual(obj.Member.Member, node.Children.First().Content.Value); node.Children.First().Content.Update("c"); Assert.AreEqual(obj.Member.Member, node.Children.First().Content.Value); }
public void TestReferenceMember() { var obj = new ReferenceMember { Member = new StringMember { Member = "a" } }; var container = new NodeContainer(); var node = container.GetOrCreateNode(obj); Assert.AreEqual(obj, node.Content.Value); Assert.AreEqual(1, node.Children.Count); Assert.AreEqual(nameof(ReferenceMember.Member), node.Children.First().Name); Assert.AreEqual(obj.Member, node.Children.First().Content.Value); Assert.AreEqual(true, node.Children.First().Content.IsReference); Assert.IsInstanceOf<ObjectReference>(node.Children.First().Content.Reference); var reference = (ObjectReference)node.Children.First().Content.Reference; Assert.AreEqual(obj.Member, reference.ObjectValue); Assert.IsNotNull(reference.TargetNode); Assert.AreEqual(obj.Member, reference.TargetNode.Content.Value); node = reference.TargetNode; Assert.AreEqual(obj.Member, node.Content.Value); Assert.AreEqual(1, node.Children.Count); Assert.AreEqual(nameof(StringMember.Member), node.Children.First().Name); Assert.AreEqual(obj.Member.Member, node.Children.First().Content.Value); obj.Member.Member = "b"; Assert.AreEqual(obj.Member.Member, node.Children.First().Content.Value); node.Children.First().Content.Update("c"); Assert.AreEqual(obj.Member.Member, node.Children.First().Content.Value); }
/// <summary> /// Updates the specified business object with values bound to the /// control which represent the current relationships. /// </summary> /// <param name="entity"></param> protected override void UpdateRelationships(Object entity) { FormView formView = ReferenceMember.ViewControl as FormView; if (formView != null) { if (formView.CurrentMode == FormViewMode.Insert) { // handle the AfterInserted event ReferenceMember.GetLinkedDataSource().AfterInserted += new LinkedDataSourceEventHandler( delegate(object sender, LinkedDataSourceEventArgs e) { ReferenceMember.CurrentEntity = e.Entity; }); // force the FormView object to call Insert formView.InsertItem(true); // get the value of the inserted item's id Object referenceId = ReferenceMember.GetEntityId(); // insert the link record InsertLink(entity, referenceId); } else if (formView.CurrentMode == FormViewMode.Edit) { // force the FormView object to call Update formView.UpdateItem(true); } } }
/// <summary> /// Initializes and updates the control with the relationships /// held within the specified business object. /// </summary> /// <param name="entity"></param> protected override void UpdateControl(Object entity) { IList links = GetLinkList(entity); Object value; foreach (Object link in links) { value = EntityUtil.GetPropertyValue(link, LinkMember.ForeignKeyName); if (value != null) { ReferenceMember.Select(value.ToString()); } } }
/// <summary> /// Initializes and updates the control with the relationships /// held within the specified business object. /// </summary> /// <param name="link">The business object that contains /// the current relationships with which to update the control.</param> protected virtual void UpdateLink(Object link) { GridViewRowCollection rows = ReferenceMember.GridControl.Rows; GridViewRow row = ReferenceMember.GetRow(rows, link); Object value; if (row != null) { // update row values foreach (EntityProperty property in ReferenceMember.PropertyMappings) { value = EntityUtil.GetPropertyValue(link, property.DataField); ReferenceMember.SetValue(row, property.DataField, value); } } }
/// <summary> /// Updates the specified business object with values bound to the /// control which represent the current relationships. /// </summary> /// <param name="entity"></param> protected override void UpdateRelationships(Object entity) { IList links = GetLinkList(entity); IList remove = new ArrayList(); String strValue; Object objValue; // verify current items selected foreach (Object link in links) { objValue = EntityUtil.GetPropertyValue(link, LinkMember.ForeignKeyName); strValue = String.Format("{0}", objValue); if (!ReferenceMember.IsSelected(strValue)) { remove.Add(link); } } // remove deleted items foreach (Object link in remove) { RemoveLink(links, link); } // add new items IList references = ReferenceMember.GetEntityList(); Object reference; // loop thru the items of the list control foreach (ListItem item in ReferenceMember.ListControl.Items) { if (item.Selected) { reference = EntityUtil.GetEntity(references, ReferenceMember.EntityKeyName, item.Value); if (reference != null) { InsertLink(links, item.Value); } } } }
/// <summary> /// Updates the specified business object with values bound to the /// control which represent the current relationships. /// </summary> /// <param name="entity"></param> protected override void UpdateRelationships(Object entity) { IList links = GetReferenceList(entity); IList remove = new ArrayList(); // verify current items foreach (Object link in links) { if (!ReferenceMember.IsCurrentItem(ReferenceMember.GridControl.Rows, link)) { remove.Add(link); } } // remove delted items foreach (Object link in remove) { RemoveReference(links, link); } // add new & update existing items IDictionary values; Object child; // loop through each row foreach (GridViewRow row in ReferenceMember.GridControl.Rows) { values = ReferenceMember.GetValues(row); if (ReferenceMember.IsNewItem(row)) { InsertReference(links, values); } else { child = ReferenceMember.GetLink(links, row); UpdateReference(child, values); } } }
protected GCRule(Reflector.ExType ext, ReferenceMember rf, GCOperator op) { refr = rf; exType = ext; this.op = op; }