/// <summary> /// Save N-Level Parent-Child Relations /// </summary> /// <param name="rootBusinessObject"></param> /// <param name="bindingSourceRootNode"></param> /// <param name="rebind"></param> public override void SaveBO(object rootBusinessObject, BindingSourceNode bindingSourceRootNode, bool rebind) { Debug.Assert(rootBusinessObject != null, "rootBusinessObject is null"); Debug.Assert(bindingSourceRootNode != null, "bindingSourceNode is null"); // disable events and unbind the business object ClearBindings(bindingSourceRootNode, true); try { rootBusinessObject = ((ISavable)rootBusinessObject).Save(); } catch (DataPortalException ex) { EvaluateDataPortalException(ex); throw; } finally { if (rebind) { // rebind UI BindBO(rootBusinessObject, bindingSourceRootNode.BindingSource); // restore events and refresh UI RestoreBindings(bindingSourceRootNode, false); } } }
private void NodeDataSource(BindingSourceNode bindingSourceNode) { foreach (BindingSourceNode bindingSourceNodeChild in bindingSourceNode.BindingSourceChilds) { NodeDataSource(bindingSourceNodeChild); bindingSourceNodeChild.BindingSource.DataSource = bindingSourceNode.BindingSource; } }
public void RestoreBindings(BindingSourceNode bindingSourceRootNode, bool forceUpdate) { Debug.Assert(bindingSourceRootNode != null, "bindingSourceNode darf nicht null sein"); Debug.Assert(bindingSourceRootNode.IsRoot, "bindingSourceNode muss IsRoot sein"); NodeDataSource(bindingSourceRootNode); NodeRaiseListChangedEvents(bindingSourceRootNode, true); NodeResetBindings(bindingSourceRootNode, forceUpdate); }
public void ClearBindings(BindingSourceNode bindingSourceRootNode, bool apply) { Debug.Assert(bindingSourceRootNode != null, "bindingSourceNode darf nicht null sein"); Debug.Assert(bindingSourceRootNode.IsRoot, "bindingSourceNode muss IsRoot sein"); NodeRaiseListChangedEvents(bindingSourceRootNode, false); NodeUnbind(bindingSourceRootNode, apply); NodeDataSource(bindingSourceRootNode); }
/// <summary> /// Add Child Nodes /// To add Childs to a Masterchild, get the Masterchild node with this command: /// rootNodename[bindingSourceXY].AddChild... /// </summary> /// <param name="bindingSource"></param> public BindingSourceNode AddChild(BindingSource bindingSource) { var newBindingSourceNode = new BindingSourceNode(bindingSource); newBindingSourceNode.IsRoot = false; _bindingSourceChilds.Add(newBindingSourceNode); return(newBindingSourceNode); }
private void NodeResetBindings(BindingSourceNode bindingSourceNode, bool forceUpdate) { bindingSourceNode.BindingSource.ResetBindings(forceUpdate); // Für alle Childs foreach (BindingSourceNode bindingSourceNodeChild in bindingSourceNode.BindingSourceChilds) { NodeResetBindings(bindingSourceNodeChild, forceUpdate); } }
private void NodeRaiseListChangedEvents(BindingSourceNode bindingSourceNode, bool raise) { bindingSourceNode.BindingSource.RaiseListChangedEvents = raise; // Für alle Childs foreach (BindingSourceNode bindingSourceNodeChild in bindingSourceNode.BindingSourceChilds) { NodeRaiseListChangedEvents(bindingSourceNodeChild, raise); } }
private void NodeUnbind(BindingSourceNode bindingSourceNode, bool apply) { // unbind the UI, child binding sources first foreach (BindingSourceNode bindingSourceNodeChild in bindingSourceNode.BindingSourceChilds) { NodeUnbind(bindingSourceNodeChild, apply); } UnbindBO(bindingSourceNode.BindingSource, apply, bindingSourceNode.IsRoot); }
/// <summary> /// Get a node via the nodes Bindingsource /// </summary> /// <param name="bindingSource">Get node with this BindingSource</param> /// <returns>Node that contains this bindingSource, could be null</returns> public BindingSourceNode this[BindingSource bindingSource] { get { BindingSourceNode res = null; foreach (BindingSourceNode node in BindingSourceChilds) { if (node.BindingSource == bindingSource) { res = node; break; } } Debug.Assert(res != null, "BindingSource not in Child List"); return(res); } }
public abstract void SaveBO(object rootBusinessObject, BindingSourceNode bindingSourceNode, bool rebind);
public override void SaveBO(object rootBusinessObject, BindingSourceNode bindingSourceRootNode, bool rebind) { throw new NotImplementedException("Not allowed in BindingManagerReadOnly"); }