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; }
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; } }
/// <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; }
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; } } }
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); }