예제 #1
0
        public Form BuildForm(RowData Data, FormLayouts FormLayout = FormLayouts.Vertical, SectionLayouts SectionLayout = SectionLayouts.Vertical, MetadataTable Table = null)
        {
            if (Table == null)
            {
                Table = Data.Metadata;
                if (Table == null)
                {
                    throw new ArgumentException("The Metadata Table argument is null, and metadata cannot be retrieved from the RowData object", "Table");
                }
            }
            Form form = new Form();

            form.FormLayout  = FormLayout;
            form.TitleColumn = Table.GuessTitleColumn();

            FormSection section = new FormSection();

            section.SectionLayout = SectionLayout;
            List <string> Columns   = Data.Columns;
            string        TableName = Table.Fullname;

            foreach (string s in Columns)
            {
                MetadataColumn mc;
                if (Table.Columns.TryGetValue(s, out mc))
                {
                    BuildField(mc, TableName, null, section, null, false);
                }
            }
            form.Sections.Add(section);
            form.Initialize(Data, Table);
            return(form);
        }
        public static SqlBuilder ToSqlBuilder(this MetadataColumn ForeignKeyColumn)
        {
            MetadataForeignKey FK      = ForeignKeyColumn.Parent.FindForeignKeys(ForeignKeyColumn).First();
            MetadataTable      PK      = SqlBuilder.DefaultMetadata.FindTable(FK.ReferencedSchema + "." + FK.ReferencedTable);
            string             namecol = PK.GuessTitleColumn();

            string[] valuecols = FK.ColumnReferences.Where(x => !x.Column.IsComputed).Select(x => x.ReferencedColumn.Name).ToArray();

            SqlBuilder Builder = SqlBuilder.Select()
                                 .From(PK.Name, null, PK.Schema)
                                 .Column(namecol)
                                 .Columns(valuecols)
                                 .Builder();
            List <MetadataColumnReference> mcrs = FK.ColumnReferences.Where(x => x.Column.IsComputed).ToList();

            if (mcrs.Count > 0)
            {
                MetadataColumnReference first = mcrs.First();
                Builder.From(PK.Name, null, PK.Schema)
                .Where(PK.Name, first.ReferencedColumn.Name, SqlOperators.Equal, (object)first.Column.Name.Trim('\"'))
                .Builder();
                foreach (MetadataColumnReference mcr in mcrs.Skip(1))
                {
                    Builder.From(PK.Name, null, PK.Schema)
                    .Where(PK.Name, mcr.ReferencedColumn.Name, SqlOperators.Equal, (object)mcr.Column.Name.Trim('\"'))
                    .Builder();
                }
            }


            return(Builder);
        }
예제 #3
0
        public Form BuildForm(SqlBuilder Builder, FormLayouts FormLayout = FormLayouts.Vertical, SectionLayouts SectionLayout = SectionLayouts.VerticalTwoColumns)
        {
            Form form = new Form();

            form.FormLayout = FormLayout;
            for (int i = 0; i < Builder.Tables.Count; i++)
            {
                FormSection section = new FormSection()
                {
                    SectionLayout = SectionLayout
                };
                Table         table = Builder.Tables[i];
                MetadataTable mt    = Builder.Metadata.FindTable(table.FullName);
                // section.Legend = StringMap.Default.GetText(SqlBuilder.DefaultCulture.LCID, mt.Fullname, mt.Name);
                section.Legend = mt.DisplayName;
                string TableName = mt.Fullname;
                if (i == 0)
                {
                    form.TitleColumn = mt.GuessTitleColumn();
                }
                foreach (Field field in table.FieldList)
                {
                    string         name = field.Name;
                    MetadataColumn mc;
                    if (mt.Columns.TryGetValue(name, out mc))
                    {
                        MetadataColumn includedFrom = mt.Columns.Values.FirstOrDefault(x => x.IncludeColumns != null && x.IncludeColumns.Contains(field.Alias ?? field.Name));
                        BuildField(mc, TableName, field.Alias, section, includedFrom, i > 0);
                    }
                }
                if (section.Fields.Count > 0)
                {
                    form.Sections.Add(section);
                }
            }
            form.Sections[0].Fields.Insert(0, new FormField()
            {
                Name = "__TABLE", ID = "__TABLE", FieldType = FieldTypes.Input, InputType = InputTypes.text, IsHidden = true
            });
            return(form);
        }
예제 #4
0
        public Form BuildForm(MetadataTable Table, FormTypes FormType, FormLayouts FormLayout = FormLayouts.Vertical, SectionLayouts SectionLayout = SectionLayouts.VerticalTwoColumns)
        {
            Form form = new Form();

            form.FormLayout  = FormLayout;
            form.TitleColumn = Table.GuessTitleColumn();
            if (form.TitleColumn == null)
            {
                form.TitleColumn = Table.PrimaryKey.Columns.First().Name;
            }
            FormSection section = new FormSection()
            {
                SectionLayout = SectionLayout
            };
            string TableName = Table.Fullname;

            foreach (MetadataColumn col in Table.Columns.Values)
            {
                BuildField(col, TableName, null, section, null, false);
            }
            form.Sections.Add(section);
            return(form);
        }
예제 #5
0
        public Form BuildForm(RowData Data, FormLayouts FormLayout = FormLayouts.Vertical, SectionLayouts SectionLayout = SectionLayouts.Vertical, MetadataTable Table = null)
        {
            if (Table == null)
            {
                Table = Data.Metadata;
                if (Table == null)
                {
                    throw new ArgumentException("The Metadata Table argument is null, and metadata cannot be retrieved from the RowData object", "Table");
                }
            }
            Form form = new Form();
            form.FormLayout = FormLayout;
            form.TitleColumn = Table.GuessTitleColumn();

            FormSection section = new FormSection();
            section.SectionLayout = SectionLayout;
            List<string> Columns = Data.Columns;
            string TableName = Table.Fullname;
            foreach (string s in Columns)
            {
                MetadataColumn mc;
                if (Table.Columns.TryGetValue(s, out mc))
                {
                    BuildField(mc, TableName, null, section, null, false);
                }
            }
            form.Sections.Add(section);
            form.Initialize(Data, Table);
            return form;
        }
예제 #6
0
 public Form BuildForm(MetadataTable Table, FormTypes FormType, FormLayouts FormLayout = FormLayouts.Vertical, SectionLayouts SectionLayout = SectionLayouts.VerticalTwoColumns)
 {
     Form form = new Form();
     form.FormLayout = FormLayout;
     form.TitleColumn = Table.GuessTitleColumn();
     if (form.TitleColumn == null)
     {
         form.TitleColumn = Table.PrimaryKey.Columns.First().Name;
     }
     FormSection section = new FormSection() { SectionLayout = SectionLayout };
     string TableName = Table.Fullname;
     foreach (MetadataColumn col in Table.Columns.Values)
     {
         BuildField(col, TableName, null, section, null, false);
     }
     form.Sections.Add(section);
     return form;
 }