Пример #1
0
        public Table()
        {
            SetDefaultStyle("vfill:true;border:1;innerborder:1");
            headerStyle = (ObjectStyle)defaultHeaderStyle.Clone();
            itemStyle   = (ObjectStyle)defaultItemStyle.Clone();
            footerStyle = (ObjectStyle)defaultFooterStyle.Clone();

            childDistribution = ObjectStyle.ChildDistribution.Vertical;

            rows.ListChanged    += OnChildObjectsListChanged;
            columns.ListChanged += Columns_ListChanged;
        }
Пример #2
0
        protected virtual void CreateHeader(Hashtable boundFields)
        {
            bool headerPresent = false;

            header = DocumentHelper.FormObjectCreator.CreateRow(columns.Count);
            header.BindableFields = boundFields;
            for (int i = 0; i < columns.Count; i++)
            {
                TableColumn tableColumn = columns [i];
                if (tableColumn.HeaderTemplate.Count != 0)
                {
                    headerPresent = true;
                }

                TableCell headerCell = (TableCell)header.Children [i];
                foreach (FormObject formObject in tableColumn.HeaderTemplate)
                {
                    headerCell.Template.Add((FormObject)formObject.Clone());
                }
                headerCell.Style = (ObjectStyle)tableColumn.HeaderStyle.Clone();
            }
            if (headerPresent)
            {
                header.Style = (ObjectStyle)headerStyle.Clone();
                if (!header.Style.InnerVerticalBorder.HasValue && style.InnerVerticalBorder.HasValue)
                {
                    header.Style.InnerVerticalBorder = style.InnerVerticalBorder;
                }

                if (!header.Style.InnerHSpacing.HasValue && style.InnerHSpacing.HasValue)
                {
                    header.Style.InnerHSpacing = style.InnerHSpacing;
                }
            }
            else
            {
                header = null;
            }
        }
Пример #3
0
        /// <summary>
        /// Refreshes the styles of the header and footer cells of this <see cref="Table"/>.
        /// </summary>
        public void RefreshRowStyles()
        {
            if (refreshingStyles)
            {
                return;
            }

            refreshingStyles = true;

            if (header != null)
            {
                header.Style = (ObjectStyle)headerStyle.Clone();
                if (!header.Style.InnerVerticalBorder.HasValue && style.InnerVerticalBorder.HasValue)
                {
                    header.Style.InnerVerticalBorder = style.InnerVerticalBorder;
                }
            }

            foreach (FormObject row in rows)
            {
                if (row != header && row != footer)
                {
                    row.Style = (ObjectStyle)itemStyle.Clone();
                    if (!row.Style.InnerVerticalBorder.HasValue && style.InnerVerticalBorder.HasValue)
                    {
                        row.Style.InnerVerticalBorder = style.InnerVerticalBorder;
                    }
                }
            }

            if (footer != null)
            {
                footer.Style = (ObjectStyle)footerStyle.Clone();
                if (!footer.Style.InnerVerticalBorder.HasValue && style.InnerVerticalBorder.HasValue)
                {
                    footer.Style.InnerVerticalBorder = style.InnerVerticalBorder;
                }
            }
            refreshingStyles = false;
        }
Пример #4
0
        public override void CreateFromTemplate(XElement node, Hashtable boundFields)
        {
            XAttribute tempAttr = node.Attribute("style");

            if (tempAttr != null)
            {
                style.LoadFromString(tempAttr.Value);
                itemStyle.LoadFromString(tempAttr.Value);
            }

            tempAttr = node.Attribute("font");
            if (tempAttr != null)
            {
                itemFont.LoadFromString(tempAttr.Value);
            }

            TextBox tb;

            tempAttr = node.Attribute("text");
            if (tempAttr != null)
            {
                tb       = DocumentHelper.FormObjectCreator.CreateTextBox();
                tb.Text  = tempAttr.Value;
                tb.Style = (ObjectStyle)itemStyle.Clone();
                tb.Font  = (ObjectFont)itemFont.Clone();
                itemTemplate.Clear();
                itemTemplate.Add(tb);
            }

            tempAttr = node.Attribute("sourceField");
            if (tempAttr != null)
            {
                tb             = DocumentHelper.FormObjectCreator.CreateTextBox();
                tb.SourceField = tempAttr.Value;
                if (boundFields [tempAttr.Value] != null)
                {
                    tb.Text = boundFields [tempAttr.Value].ToString();
                }
                tb.Style = (ObjectStyle)itemStyle.Clone();
                tb.Font  = (ObjectFont)itemFont.Clone();
                itemTemplate.Clear();
                itemTemplate.Add(tb);
            }

            foreach (XElement child in node.Elements())
            {
                XAttribute styleAttr;
                switch (child.Name.LocalName.ToLowerInvariant())
                {
                case "template":
                    styleAttr = child.Attribute("style");
                    if (styleAttr != null)
                    {
                        itemStyle.LoadFromString(styleAttr.Value);
                    }

                    if (child.HasElements)
                    {
                        CreateChildrenFromTemplate(child, boundFields, ref itemTemplate);
                    }
                    break;

                case "header":
                    styleAttr = child.Attribute("style");
                    if (styleAttr != null)
                    {
                        headerStyle.LoadFromString(styleAttr.Value);
                    }

                    tempAttr = node.Attribute("font");
                    if (tempAttr != null)
                    {
                        headerFont.LoadFromString(tempAttr.Value);
                    }

                    tempAttr = child.Attribute("text");
                    if (tempAttr != null)
                    {
                        tb       = DocumentHelper.FormObjectCreator.CreateTextBox();
                        tb.Text  = tempAttr.Value;
                        tb.Style = (ObjectStyle)headerStyle.Clone();
                        tb.Font  = (ObjectFont)headerFont.Clone();
                        headerTemplate.Clear();
                        headerTemplate.Add(tb);
                    }

                    tempAttr = child.Attribute("sourceField");
                    if (tempAttr != null)
                    {
                        tb             = DocumentHelper.FormObjectCreator.CreateTextBox();
                        tb.SourceField = tempAttr.Value;
                        tb.Text        = boundFields [tempAttr.Value].ToString();
                        tb.Style       = (ObjectStyle)headerStyle.Clone();
                        tb.Font        = (ObjectFont)headerFont.Clone();
                        headerTemplate.Clear();
                        headerTemplate.Add(tb);
                    }

                    if (child.HasElements)
                    {
                        CreateChildrenFromTemplate(child, boundFields, ref headerTemplate);
                    }
                    break;

                case "footer":
                    styleAttr = child.Attribute("style");
                    if (styleAttr != null)
                    {
                        footerStyle.LoadFromString(styleAttr.Value);
                    }

                    tempAttr = node.Attribute("font");
                    if (tempAttr != null)
                    {
                        footerFont.LoadFromString(tempAttr.Value);
                    }

                    tempAttr = child.Attribute("text");
                    if (tempAttr != null)
                    {
                        tb       = DocumentHelper.FormObjectCreator.CreateTextBox();
                        tb.Text  = tempAttr.Value;
                        tb.Style = (ObjectStyle)footerStyle.Clone();
                        tb.Font  = (ObjectFont)footerFont.Clone();
                        footerTemplate.Clear();
                        footerTemplate.Add(tb);
                    }

                    tempAttr = child.Attribute("sourceField");
                    if (tempAttr != null)
                    {
                        tb             = DocumentHelper.FormObjectCreator.CreateTextBox();
                        tb.SourceField = tempAttr.Value;
                        tb.Text        = boundFields [tempAttr.Value].ToString();
                        tb.Style       = (ObjectStyle)footerStyle.Clone();
                        tb.Font        = (ObjectFont)footerFont.Clone();
                        footerTemplate.Clear();
                        footerTemplate.Add(tb);
                    }

                    if (child.HasElements)
                    {
                        CreateChildrenFromTemplate(child, boundFields, ref footerTemplate);
                    }
                    break;
                }
            }
        }
Пример #5
0
        public override void CreateFromTemplate(XElement node, Hashtable boundFields)
        {
            XAttribute tempAttr = node.Attribute("sourceTable");

            if (tempAttr != null)
            {
                sourceTable = tempAttr.Value;
            }

            base.CreateFromTemplate(node, boundFields);

            tempAttr = node.Attribute("headerStyle");
            if (tempAttr != null)
            {
                headerStyle.LoadFromString(tempAttr.Value);
            }

            tempAttr = node.Attribute("itemStyle");
            if (tempAttr != null)
            {
                ItemStyle.LoadFromString(tempAttr.Value);
            }

            tempAttr = node.Attribute("hasHeader");
            if (tempAttr != null)
            {
                bool.TryParse(tempAttr.Value, out hasHeader);
            }

            tempAttr = node.Attribute("footerStyle");
            if (tempAttr != null)
            {
                footerStyle.LoadFromString(tempAttr.Value);
            }

            tempAttr = node.Attribute("sourceTableHasFooter");
            if (tempAttr != null)
            {
                bool.TryParse(tempAttr.Value, out sourceTableHasFooter);
            }

            tempAttr = node.Attribute("sourceTableHasFooterSource");
            if (tempAttr != null)
            {
                sourceTableHasFooterSource = tempAttr.Value;
                if (boundFields.ContainsKey(sourceTableHasFooterSource))
                {
                    bool.TryParse(boundFields [sourceTableHasFooterSource].ToString(), out sourceTableHasFooter);
                }
            }

            foreach (XElement child in node.Elements())
            {
                switch (child.Name.LocalName.ToLowerInvariant())
                {
                case "columns":
                    foreach (XElement column in child.Elements())
                    {
                        TableColumn tableColumn;
                        switch (column.Name.LocalName.ToLowerInvariant())
                        {
                        case "column":
                            tableColumn = new TableColumn(column, boundFields);
                            break;

                        default:
                            continue;
                        }

                        columns.Add(tableColumn);
                    }

                    CreateHeader(boundFields);
                    CreateFooter(boundFields);
                    break;

                case "rows":
                    if (sourceTable.Length == 0)
                    {
                        foreach (XElement row in child.Elements())
                        {
                            TableRow tableRow;
                            switch (row.Name.LocalName.ToLowerInvariant())
                            {
                            case "row":
                                tableRow = DocumentHelper.FormObjectCreator.CreateRow(row, boundFields);
                                break;

                            default:
                                continue;
                            }
                            if (tableRow.Style.ToString(tableRow.DefaultStyle) == tableRow.DefaultStyle.ToString(tableRow.DefaultStyle))
                            {
                                tableRow.Style = (ObjectStyle)itemStyle.Clone();
                            }
                            rows.Add(tableRow);

                            if (style.InnerVerticalBorder.HasValue)
                            {
                                tableRow.Style.InnerVerticalBorder = style.InnerVerticalBorder;
                            }

                            if (style.InnerHSpacing.HasValue)
                            {
                                tableRow.Style.InnerHSpacing = style.InnerHSpacing;
                            }
                        }
                    }
                    break;
                }
            }

            RefreshStructure(boundFields);
        }