/// <summary> /// Instantiate a NsDataAccess object from a record ID. /// </summary> /// <param name="state">dataset state object</param> /// <param name="instantiateNewForm">Indicates whether to create a new form object if it doesn't exist.</param> /// <param name="parentFormHandle">Form handle of the parent form. Applicable only to subforms.</param> /// <param name="parentControlName">controlName of the control in the parent form representing the subform. Applicable only to subforms.</param> /// <param name="instantiatedForm"> True if and only if a new form was instantiated.</param> /// <returns>A new NsDataObject.</returns> public static NsDataAccess Create( NavRecordState state, Boolean instantiateNewForm, Guid parentFormHandle, String parentControlName, out Boolean instantiatedForm) { instantiatedForm = false; if (state.IsResourceDefinedForm) { return(new NsTableDataAccess(ApplicationFactory.GetResourceDefinedFormTable(state.FormId))); } else if (state.FormId != 0 || state.ServerFormHandle != Guid.Empty) { NavConnection connection = NavConnection.Current; // Try to retrieve an existing instance of the form. NavForm form = connection.GetForm(state.ServerFormHandle); if (form == null) { if (instantiateNewForm) { // Not found - create new instance. if ((parentFormHandle != Guid.Empty) && (!String.IsNullOrEmpty(parentControlName))) { // Subform information provided - try to instantiate through the parent form NavForm parentForm = connection.GetForm(parentFormHandle); using (parentForm) { if (parentForm.TryGetUIPart(parentControlName, out form)) { form.AddReference(); } } } if (form == null) { // Form not instantiated as subform, try to instantiate as independent form form = NavEnvironment.Instance.ApplicationFactory.GetForm(state.FormId); } if (form != null) { instantiatedForm = true; state.ServerFormHandle = form.Handle; Debug.Assert(state.FormId == form.FormId); } } else { throw new NavException(NavException.NCL.ErrFormNotOpen); } } return(new NsFormDataAccess(form)); } else { Debug.Assert(state.TableId != 0); return(new NsTableDataAccess(state.TableId)); } }
/// <summary> /// Initializes a new instance of the NsFormDataAccess class. /// </summary> /// <param name="form">Form object to initialize from.</param> internal NsFormDataAccess(NavForm form) { Debug.Assert(form != null); this.form = form; this.subformUpdateParameters = new List <NavFormUpdateParameters>(); form.UpdateRequest += new EventHandler <UpdateRequestEventArgs>(this.FormUpdateRequest); NavConnection.Current.DataCommittedEvent += new EventHandler(this.GetCommittedData); }
/// <summary> /// Instantiate a NsDataAccess object from a form. /// </summary> /// <param name="form">The form to create.</param> /// <returns>A new NsDataObject.</returns> public static NsDataAccess Create(NavForm form) { if (form != null) { form.AddReference(); } return(new NsFormDataAccess(form)); }
private void FormUpdateRequest(object sender, UpdateRequestEventArgs eventArgs) { if (sender == null) { throw new ArgumentNullException("sender"); } if (eventArgs == null) { throw new ArgumentNullException("eventArgs"); } NavForm sendingForm = sender as NavForm; if (sendingForm == null) { throw new ArgumentException("sender"); } if (sendingForm == this.Form) { // update is to the parent form this.updateType |= eventArgs.UpdateRequestType; } else { // If there is already an entry in the list for the subform then find and update it bool found = false; for (int i = 0; i < this.subformUpdateParameters.Count; i++) { if (this.subformUpdateParameters[i].ServerFormHandle == sendingForm.Handle) { NavFormUpdateParameters parameters = this.subformUpdateParameters[i]; parameters.UpdateType |= eventArgs.UpdateRequestType; this.subformUpdateParameters[i] = parameters; found = true; break; } } if (!found) { NavFormUpdateParameters parameters = new NavFormUpdateParameters(); parameters.ServerFormHandle = sendingForm.Handle; parameters.UpdateType = eventArgs.UpdateRequestType; this.subformUpdateParameters.Add(parameters); } } }
/// <summary> /// Initializes a new instance of the NsFormDataAccess class. /// </summary> /// <param name="form">Form object to initialize from.</param> internal NsFormDataAccess(NavForm form) { Debug.Assert(form != null); this.form = form; this.subformUpdateParameters = new List<NavFormUpdateParameters>(); form.UpdateRequest += new EventHandler<UpdateRequestEventArgs>(this.FormUpdateRequest); NavConnection.Current.DataCommittedEvent += new EventHandler(this.GetCommittedData); }
/// <summary> /// Instantiate a NsDataAccess object from a form. /// </summary> /// <param name="form">The form to create.</param> /// <returns>A new NsDataObject.</returns> public static NsDataAccess Create(NavForm form) { if (form != null) { form.AddReference(); } return new NsFormDataAccess(form); }