/// <summary>todoComment</summary>
        public void SpecialInitUserControl()
        {
            // Set up screen logic
            FLogic.MultiTableDS           = (PartnerEditTDS)FMainDS;
            FLogic.PartnerEditUIConnector = FPartnerEditUIConnector;
            FLogic.LoadDataOnDemand();

            grdDetails.Columns.Clear();
            grdDetails.AddTextColumn("Description", FMainDS.PPartnerRelationship.ColumnDisplayRelationDescription);
            grdDetails.AddPartnerKeyColumn("Partner Key", FMainDS.PPartnerRelationship.Columns["OtherPartnerKey"]);
            grdDetails.AddTextColumn("Partner Name",
                                     FMainDS.PPartnerRelationship.Columns[PartnerEditTDSPPartnerRelationshipTable.GetPartnerShortNameDBName()]);
            grdDetails.AddTextColumn("Class", FMainDS.PPartnerRelationship.Columns[PartnerEditTDSPPartnerRelationshipTable.GetPartnerClassDBName()]);
            grdDetails.AddTextColumn("Comment", FMainDS.PPartnerRelationship.Columns[PPartnerRelationshipTable.GetCommentDBName()]);

            OnHookupDataChange(new THookupPartnerEditDataChangeEventArgs(TPartnerEditTabPageEnum.petpPartnerRelationships));

            // Hook up DataSavingStarted Event to be able to run code before SaveChanges is doing anything
            FPetraUtilsObject.DataSavingStarted += new TDataSavingStartHandler(this.DataSavingStarted);

            // hook up partner changed event for partner key and relation key so grid can be updated when new record is created
            // where data did not already come from server
            txtPPartnerRelationshipPartnerKey.ValueChanged  += new TDelegatePartnerChanged(txtPPartnerRelationshipPartnerKey_ValueChanged);
            txtPPartnerRelationshipRelationKey.ValueChanged += new TDelegatePartnerChanged(txtPPartnerRelationshipRelationKey_ValueChanged);

            if (grdDetails.Rows.Count > 1)
            {
                grdDetails.SelectRowInGrid(1);
                ShowDetails(1); // do this as for some reason details are not automatically show here at the moment
            }
            else
            {
                btnEditOtherPartner.Enabled = false;
            }
        }
        private void InitializeManualCode()
        {
            FLogic = new TUCPartnerRelationshipsLogic();

            if (!FMainDS.Tables.Contains(PartnerEditTDSPPartnerRelationshipTable.GetTableName()))
            {
                FMainDS.Tables.Add(new PartnerEditTDSPPartnerRelationshipTable());
            }

            FMainDS.InitVars();
        }
예제 #3
0
        private PartnerEditTDSPPartnerRelationshipTable GetPartnerRelationshipsInternal(out Int32 ACount, Boolean ACountOnly)
        {
            TDBTransaction ReadTransaction;
            Boolean NewTransaction = false;
            PartnerEditTDSPPartnerRelationshipTable RelationshipDT;
            PPartnerTable PartnerDT;

            RelationshipDT = new PartnerEditTDSPPartnerRelationshipTable();
            try
            {
                ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.RepeatableRead,
                    TEnforceIsolationLevel.eilMinimum,
                    out NewTransaction);

                if (ACountOnly)
                {
                    // count relationships where partner is involved with partner key or reciprocal
                    ACount = PPartnerRelationshipAccess.CountViaPPartnerPartnerKey(FPartnerKey, ReadTransaction) +
                             PPartnerRelationshipAccess.CountViaPPartnerRelationKey(FPartnerKey, ReadTransaction);
                }
                else
                {
//                  TLogging.LogAtLevel(7, "TPartnerEditUIConnector.GetRelationshipsInternal: loading Relationships for Partner " + FPartnerKey.ToString() + "...");
                    try
                    {
                        // load relationships where partner is involved with partner key or reciprocal
                        RelationshipDT.Merge(PPartnerRelationshipAccess.LoadViaPPartnerPartnerKey(FPartnerKey, ReadTransaction));
                        RelationshipDT.Merge(PPartnerRelationshipAccess.LoadViaPPartnerRelationKey(FPartnerKey, ReadTransaction));

                        foreach (PartnerEditTDSPPartnerRelationshipRow RelationshipRow in RelationshipDT.Rows)
                        {
                            // find partner name and class depending on relation and add it to data set
                            if (RelationshipRow.PartnerKey == FPartnerKey)
                            {
                                PartnerDT = PPartnerAccess.LoadByPrimaryKey(RelationshipRow.RelationKey, ReadTransaction);
                            }
                            else
                            {
                                PartnerDT = PPartnerAccess.LoadByPrimaryKey(RelationshipRow.PartnerKey, ReadTransaction);
                            }

                            // set extended fields for partner data if record exists
                            if (PartnerDT.Rows[0] != null)
                            {
                                RelationshipRow.PartnerShortName = ((PPartnerRow)PartnerDT.Rows[0]).PartnerShortName;
                                RelationshipRow.PartnerClass = ((PPartnerRow)PartnerDT.Rows[0]).PartnerClass;
                            }
                        }
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                    ACount = RelationshipDT.Rows.Count;
                }
            }
            finally
            {
                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.CommitTransaction();
                    TLogging.LogAtLevel(7, "TPartnerEditUIConnector.GetRelationshipsInternal: committed own transaction.");
                }
            }
            return RelationshipDT;
        }