Ejemplo n.º 1
0
 protected void EnsureGroup(string groupName, string titleSeed, string pageType, bool isReadOnly)
 {
     if (groupName != String.Empty)
     {
         GroupElement groupElement = _rootElement.FindElement(groupName) as GroupElement;
         if (groupElement == null)
         {
             ElaboratedGroup group = _derivationInfo.ElaboratedExpression.Groups[groupName];
             groupElement = new GroupElement(groupName);
             MetaData groupMetaData = new MetaData(group.Properties);
             groupElement.ElementType    = DerivationUtility.GetTag(groupMetaData, "ElementType", pageType, "Group");
             groupElement.EliminateGroup = Boolean.Parse(DerivationUtility.GetTag(groupMetaData, "EliminateGroup", pageType, "True"));
             CreateContainerElement(groupElement, _derivationInfo.ElaboratedExpression.Groups[groupName], titleSeed, pageType, isReadOnly);
             AddElement(groupElement, GetParentGroupName(groupName), titleSeed, pageType, isReadOnly);
         }
     }
 }
Ejemplo n.º 2
0
        protected virtual void BuildQuickLookup
        (
            ElaboratedTableVarColumn column,
            ElaboratedReference reference,
            string[] columnNames,
            string[] lookupColumnNames,
            string[] masterKeyNames,
            string[] detailKeyNames,
            string pageType,
            string titleSeed,
            bool readOnly
        )
        {
            // Prepare the quick lookup group
            if (reference.IsEmbedded)
            {
                string lookupGroupName = _derivationInfo.ElaboratedExpression.Groups.ResolveGroupName(String.Format("{0}{1}", reference.ElaboratedName, "Group"));
                EnsureGroups(lookupGroupName, titleSeed, pageType, readOnly);
                GroupElement groupElement = _rootElement.FindElement(lookupGroupName) as GroupElement;

                MetaData groupMetaData = DerivationUtility.ExtractTags(reference.Reference.MetaData, groupElement.ElementType, pageType, reference.ReferenceType.ToString());
                PrepareElement(groupElement, groupMetaData, reference.Reference.MetaData, titleSeed, pageType, reference.ReferenceType.ToString(), readOnly);
            }
            LookupColumnElement lookupGroup = new LookupColumnElement(String.Format("{0}Column{1}_Lookup", _derivationInfo.MainSourceName, column.ElaboratedName));

            lookupGroup.ElementType = DerivationUtility.GetTag(reference.Reference.MetaData, "ElementType", pageType, reference.ReferenceType.ToString(), "QuickLookup");
            DerivationUtility.ExtractProperties(reference.Reference.MetaData, lookupGroup.ElementType, pageType, lookupGroup.Properties);
            lookupGroup.Properties.SafeAdd(new Tag("Source", _derivationInfo.MainSourceName));
            lookupGroup.Source = lookupGroup.Properties.GetTag("Source").Value;
            lookupGroup.Properties.SafeAdd(new Tag("ColumnName", Schema.Object.Qualify(column.Column.Name, column.ElaboratedTableVar.ElaboratedName)));
            lookupGroup.ColumnName = lookupGroup.Properties.GetTag("ColumnName").Value;
            lookupGroup.Properties.SafeAdd(new Tag("LookupColumnName", Schema.Object.Qualify(reference.Reference.TargetKey.Columns[reference.Reference.SourceKey.Columns.IndexOf(column.Column.Name)].Name, DerivationUtility.MainElaboratedTableName)));
            lookupGroup.LookupColumnName = lookupGroup.Properties.GetTag("LookupColumnName").Value;
            lookupGroup.Properties.SafeAdd(new Tag("Document", GetLookupDocument(reference, masterKeyNames, detailKeyNames)));
            lookupGroup.LookupDocument = lookupGroup.Properties.GetTag("Document").Value;
            if (masterKeyNames.Length > 0)
            {
                lookupGroup.Properties.SafeAdd(new Tag("MasterKeyNames", StringArrayToNames(masterKeyNames)));
                lookupGroup.MasterKeyNames = lookupGroup.Properties.GetTag("MasterKeyNames").Value;
                lookupGroup.Properties.SafeAdd(new Tag("DetailKeyNames", StringArrayToNames(detailKeyNames)));
                lookupGroup.DetailKeyNames = lookupGroup.Properties.GetTag("DetailKeyNames").Value;
            }

            if (column.ReadOnly || readOnly || Convert.ToBoolean(DerivationUtility.GetTag(column.Column.MetaData, "ReadOnly", pageType, "False")))
            {
                lookupGroup.Properties.AddOrUpdate("ReadOnly", "True");
            }

            MetaData metaData = DerivationUtility.ExtractTags(reference.Reference.MetaData, lookupGroup.ElementType, pageType, reference.ReferenceType.ToString());

            PrepareElement(lookupGroup, metaData, reference.Reference.MetaData, titleSeed, pageType, reference.ReferenceType.ToString(), readOnly);

            if (!Boolean.Parse(DerivationUtility.GetTag(metaData, "Visible", pageType, "True")))
            {
                lookupGroup.Properties.AddOrUpdate("Visible", "False");
            }

            AddElement(lookupGroup, column.GroupName, titleSeed, pageType, readOnly);

            // Build the element
            column.GroupName = lookupGroup.Name;
            Element controlElement = BuildColumnElement(column, pageType, titleSeed, readOnly);

            if (!controlElement.Properties.Contains("TitleAlignment"))
            {
                switch (controlElement.ElementType)
                {
                case "TextBox":
                case "DateTimeBox":
                case "NumericTextBox": controlElement.Properties.Add(new Tag("TitleAlignment", "None")); break;
                }
            }

            // Use the column's title for the group (only in the case of a quick lookup)
            lookupGroup.Title = controlElement.Title;

            // If the control has a flow break specified, push it onto the lookup group (only in the case of a quick lookup)
            if (controlElement.FlowBreak)
            {
                lookupGroup.FlowBreak = true;
            }
        }