/// <summary> /// Overridden. /// </summary> /// <param name="element"></param> /// <param name="doc"></param> /// <param name="level"></param> protected override void OnWriteElement(ICompositionElement element, IGenerationContext context, IDocument doc, int level) { IScalarValueProducer singleValue = element as IScalarValueProducer; if (singleValue != null) { CreateAddSimpleText(doc, doc.Content, singleValue.GetValue(context)); } else { IMultipleRowsProducer rp = element as IMultipleRowsProducer; if (rp != null) { WriteTable(rp, context, doc); } } }
private void WriteElement(ICompositionElement element, XElement parent, IGenerationContext context) { XElement el = CreateTag(TagType.Div); if (element.ChildrenSupported) { foreach (ICompositionElement child in element.Children) { WriteElement(child, el, context); } } IScalarValueProducer singleValue = element as IScalarValueProducer; if (singleValue != null) { XElement elValue = CreateTag(TagType.Span); elValue.Add(new XAttribute("class", "value")); elValue.Add(singleValue.GetValue(context)); el.Add(elValue); } else { IMultipleRowsProducer rows = element as IMultipleRowsProducer; if (rows != null) { XElement elTable = CreateTag(TagType.Table); XElement elTableHeader = null; foreach (DataRow row in rows.GetValue(context)) { if (elTableHeader == null) { elTableHeader = CreateTag(TagType.TableHeader); XElement elTableHeaderRow = CreateTag(TagType.TableRow); foreach (DataColumn col in row.Table.Columns) { elTableHeaderRow.Add(new XElement(GetTagName(TagType.TableColumn), new XText(col.ColumnName))); } elTableHeader.Add(elTableHeaderRow); elTable.Add(elTableHeader); } XElement elRow = CreateTag(TagType.TableRow); foreach (object colValue in row.ItemArray) { XElement elColValue = CreateTag(TagType.Span); elColValue.Add(new XAttribute("class", "value")); elColValue.Add(colValue); elRow.Add(new XElement(GetTagName(TagType.TableColumn), elColValue)); } elTable.Add(elRow); } el.Add(elTable); } else { if (element.Classification.HasFlag(ElementClassifications.Separator)) { el.Name = GetTagName(TagType.HorizontalRule); } double height = element.GetProperty("height", double.NaN); if (!double.IsNaN(height)) { ApplyClass(el, "height-" + height.ToString()); } } } parent.Add(el); }