Пример #1
0
        /// <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));
            }
        }
Пример #2
0
 /// <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);
 }
Пример #3
0
        /// <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));
        }
Пример #4
0
        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);
        }