Пример #1
0
        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);
        }
Пример #2
0
        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);
                }
            }
        }
Пример #8
0
 protected GCRule(Reflector.ExType ext, ReferenceMember rf, GCOperator op)
 {
     refr    = rf;
     exType  = ext;
     this.op = op;
 }