public void PreLookup(IFormInterface form)
 {
     if (HasMasterSource())
     {
         form.CheckMainSource();
         form.MainSource.MasterKeyNames = _lookup.MasterKeyNames;
         form.MainSource.DetailKeyNames = _lookup.DetailKeyNames;
         form.MainSource.Master         = _lookup.Source;
     }
 }
        public static void DoLookup(ILookup lookupNode, FormInterfaceHandler onFormAccept, FormInterfaceHandler onFormReject, System.Collections.IDictionary state)
        {
            bool isReadOnly = (lookupNode is ILookupElement) && ((ILookupElement)lookupNode).ReadOnly;

            if (!isReadOnly && (lookupNode.Document != String.Empty) && (lookupNode.Source != null) && (lookupNode.Source.DataView != null))
            {
                lookupNode.Source.DataView.Edit();
                lookupNode.Source.DataView.RequestSave();
                IFormInterface form = lookupNode.HostNode.Session.LoadForm(lookupNode, lookupNode.Document, new FormInterfaceHandler(new LookupContext(lookupNode).PreLookup));
                try
                {
                    // Append the specified state
                    if (state != null)
                    {
                        foreach (KeyValuePair <string, object> entry in state)
                        {
                            form.UserState.Add(entry.Key, entry.Value);
                        }
                    }

                    lookupNode.LookupFormInitialize(form);

                    string[] columnNames       = GetColumnNames(lookupNode.MasterKeyNames, lookupNode.GetColumnNames());
                    string[] lookupColumnNames = GetColumnNames(lookupNode.DetailKeyNames, lookupNode.GetLookupColumnNames());

                    form.CheckMainSource();

                    LookupUtility.FindNearestRow
                    (
                        form.MainSource.DataSource,
                        lookupColumnNames,
                        lookupNode.Source.DataSource,
                        columnNames
                    );

                    form.Show
                    (
                        (IFormInterface)lookupNode.FindParent(typeof(IFormInterface)),
                        onFormAccept,
                        onFormReject,
                        FormMode.Query
                    );
                }
                catch
                {
                    form.HostNode.Dispose();
                    throw;
                }
            }
        }
Exemple #3
0
        protected void InternalBeforeActivateForm(IFormInterface form)
        {
            if (form.MainSource != null)
            {
                if (!String.IsNullOrEmpty(_filter))
                {
                    form.MainSource.Filter = _filter;
                }
                if (_mainSourceParams != null)
                {
                    form.MainSource.Params = _mainSourceParams;
                }
                form.MainSource.Default += new DataLinkHandler(DefaultData);
            }

            if (_sourceLink != null)
            {
                _sourceLink.TargetSource = form.MainSource;
            }

            switch (_mode)
            {
            case FormMode.Insert:
                if (_useOpenState || _manageRefreshAfterPost || _manageWriteOnly)
                {
                    form.CheckMainSource();
                    if (_useOpenState)
                    {
                        form.MainSource.OpenState = DAE.Client.DataSetState.Insert;
                    }
                    if (_manageRefreshAfterPost)
                    {
                        form.MainSource.RefreshAfterPost = false;
                    }
                    if (_manageWriteOnly)
                    {
                        form.MainSource.IsWriteOnly = true;
                    }
                }
                break;

            case FormMode.Edit:
                if (_useOpenState || _manageRefreshAfterPost)
                {
                    form.CheckMainSource();
                    if (_useOpenState)
                    {
                        form.MainSource.OpenState = DAE.Client.DataSetState.Edit;
                    }
                    if (_manageRefreshAfterPost)
                    {
                        form.MainSource.RefreshAfterPost = false;
                    }
                }
                break;
            }

            if (_beforeFormActivated != null)
            {
                _beforeFormActivated.Execute(this, new EventParams("AForm", form));
            }
        }