protected virtual void BuildFullLookup ( ElaboratedReference reference, string[] columnNames, string[] lookupColumnNames, string[] masterKeyNames, string[] detailKeyNames, string pageType, string titleSeed, bool readOnly ) { if (reference.IsEmbedded) { string lookupGroupName = _derivationInfo.ElaboratedExpression.Groups.ResolveGroupName(String.Format("{0}{1}", reference.ElaboratedName, "Group")); LookupGroupElement lookupGroupElement = _rootElement.FindElement(lookupGroupName) as LookupGroupElement; if (lookupGroupElement == null) { lookupGroupElement = new LookupGroupElement(lookupGroupName); lookupGroupElement.ElementType = DerivationUtility.GetTag(reference.GroupMetaData, "ElementType", pageType, reference.ReferenceType.ToString(), DerivationUtility.GetTag(reference.Reference.MetaData, "ElementType", pageType, reference.ReferenceType.ToString(), "FullLookup")); CreateContainerElement(lookupGroupElement, _derivationInfo.ElaboratedExpression.Groups[lookupGroupName], titleSeed, pageType, readOnly); MetaData metaData = DerivationUtility.ExtractTags(reference.Reference.MetaData, lookupGroupElement.ElementType, pageType, reference.ReferenceType.ToString()); PrepareElement(lookupGroupElement, metaData, reference.Reference.MetaData, titleSeed, pageType, reference.ReferenceType.ToString(), readOnly); lookupGroupElement.Properties.SafeAdd(new Tag("Source", _derivationInfo.MainSourceName)); lookupGroupElement.Source = lookupGroupElement.Properties.GetTag("Source").Value; lookupGroupElement.Properties.SafeAdd(new Tag("ColumnNames", StringArrayToNames(columnNames))); lookupGroupElement.ColumnNames = lookupGroupElement.Properties.GetTag("ColumnNames").Value; lookupGroupElement.Properties.SafeAdd(new Tag("LookupColumnNames", StringArrayToNames(lookupColumnNames))); lookupGroupElement.LookupColumnNames = lookupGroupElement.Properties.GetTag("LookupColumnNames").Value; lookupGroupElement.Properties.SafeAdd(new Tag("Document", GetLookupDocument(reference, masterKeyNames, detailKeyNames))); lookupGroupElement.LookupDocument = lookupGroupElement.Properties.GetTag("LookupDocument").Value; if (masterKeyNames.Length > 0) { lookupGroupElement.Properties.SafeAdd(new Tag("MasterKeyNames", StringArrayToNames(masterKeyNames))); lookupGroupElement.MasterKeyNames = lookupGroupElement.Properties.GetTag("MasterKeyNames").Value; lookupGroupElement.Properties.SafeAdd(new Tag("DetailKeyNames", StringArrayToNames(detailKeyNames))); lookupGroupElement.DetailKeyNames = lookupGroupElement.Properties.GetTag("DetailKeyNames").Value; } AddElement(lookupGroupElement, GetParentGroupName(lookupGroupName), titleSeed, pageType, readOnly); } } }
protected override void BuildQuickLookup ( ElaboratedTableVarColumn column, ElaboratedReference reference, string[] columnNames, string[] lookupColumnNames, string[] masterKeyNames, string[] detailKeyNames, string pageType, string titleSeed, bool readOnly ) { if (reference.IsEmbedded) { string lookupGroupName = _derivationInfo.ElaboratedExpression.Groups.ResolveGroupName(String.Format("{0}{1}", reference.ElaboratedName, "Group")); EnsureGroups(lookupGroupName, titleSeed, pageType, readOnly); } BuildColumnElement(column, pageType, titleSeed, readOnly); }
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; } }
protected string GetLookupDocument(ElaboratedReference reference, string[] masterKeyNames, string[] detailKeyNames) { string pageType = Boolean.Parse ( DerivationUtility.GetTag ( reference.Reference.MetaData, "UseList", "", reference.ReferenceType.ToString(), DerivationUtility.GetTag ( reference.TargetElaboratedTableVar.TableVar.MetaData, "UseList", "False" ) ) ) ? DerivationUtility.List : DerivationUtility.Browse; string query = DerivationUtility.GetTag ( reference.Reference.MetaData, "Query", pageType, reference.ReferenceType.ToString(), DerivationUtility.GetTag ( reference.TargetElaboratedTableVar.TableVar.MetaData, "Query", pageType, reference.Reference.TargetTable.Name ) ); string localMasterKeyNames = DerivationUtility.GetTag ( reference.Reference.MetaData, "MasterKeyNames", pageType, reference.ReferenceType.ToString(), StringArrayToNames(masterKeyNames) ); string localDetailKeyNames = DerivationUtility.GetTag ( reference.Reference.MetaData, "DetailKeyNames", pageType, reference.ReferenceType.ToString(), StringArrayToNames(detailKeyNames) ); bool elaborate = Boolean.Parse ( DerivationUtility.GetTag ( reference.Reference.MetaData, "Elaborate", pageType, reference.ReferenceType.ToString(), DerivationUtility.GetTag ( reference.TargetElaboratedTableVar.TableVar.MetaData, "Elaborate", pageType, "True" ) ) ); if (localMasterKeyNames != String.Empty) { return (DerivationUtility.GetTag ( reference.Reference.MetaData, "Document", pageType, reference.ReferenceType.ToString(), _derivationInfo.BuildDerivationExpression ( pageType, query, localMasterKeyNames, localDetailKeyNames, elaborate ) )); } else { return (DerivationUtility.GetTag ( reference.Reference.MetaData, "Document", pageType, reference.ReferenceType.ToString(), DerivationUtility.GetTag ( reference.TargetElaboratedTableVar.TableVar.MetaData, "Document", pageType, _derivationInfo.BuildDerivationExpression ( pageType, query, "", "", elaborate ) ) )); } }