public void Test_Table_Normal() { var tbody = new TableBody() .AddRow(new TableRow() .AddCell((TableCell) new TableCell().AddContent("A11")) .AddCell((TableCell) new TableCell().AddContent("B11"))) .AddRow(new TableRow() .AddCell((TableCell) new TableCell().AddContent("A21")) .AddCell((TableCell) new TableCell().AddContent("B21"))); var tfoot = new TableFooter() .AddRow(new TableRow() .AddCell((TableCell) new TableCell().AddContent("F1")) .AddCell((TableCell) new TableCell().AddContent("F2"))); var thead = new TableHeader() .AddRow(new TableRow() .AddCell((TableHeaderCell) new TableHeaderCell().AddContent("B02")) .AddCell((TableHeaderCell) new TableHeaderCell().AddContent("B01"))); var table = new Table() { StyleValue = TableStyles.Bordered, CaptionValue = (TableCaption) new TableCaption().AddContent("Hello"), HeaderValue = (TableHeader)thead, FooterValue = (TableFooter)tfoot }; using (table.BeginContent(writer, contextMock.Object)) { tbody.WriteTo(writer, contextMock.Object); } Assert.Equal( "<table class=\"table table-bordered\"><caption>Hello</caption><thead><tr><th>B02</th><th>B01</th></tr></thead><tbody><tr><td>A11</td><td>B11</td></tr><tr><td>A21</td><td>B21</td></tr></tbody><tfoot><tr><td>F1</td><td>F2</td></tr></tfoot></table>", writer.ToString()); }
private void Initialize(string name, string href, bool autoGenerateColumns, bool hasFooter, IEnumerable <int> pageSizes, GridTheme theme) { if (theme == null) { theme = DefaulTheme; } Theme = theme; Class = Theme.Table; Id = name; Href = href; AutoGenerateColumns = autoGenerateColumns; Header = new TableHeader(); Body = new TableBody(); if (hasFooter) { Footer = new TableFooter(); } DefaultText = "No data found."; PageDisplay = "page {0} of {1}"; if (pageSizes == null) { pageSizes = new List <int> { 10, 20, 50 }; } _pageSizes = pageSizes; InitColumns(); InitCommands(); InitBody(); }
public void TestTableFooter() { TableFooter tblFooter = new TableFooter(); Assert.AreEqual(1, TestUtils.RegexCount(tblFooter.Top, "<*w:tr")); Assert.AreEqual(2, TestUtils.RegexCount(tblFooter.Middle, "<*w:tc>")); Assert.AreEqual(1, TestUtils.RegexCount(tblFooter.Middle, "<w:b/>")); // In // this // framework, // footer // has // to // be // bold... Assert.AreEqual(1, TestUtils.RegexCount(tblFooter.Middle, "<w:t>[{]value[}]</w:t>")); // test placeholder Assert.AreEqual(1, TestUtils.RegexCount(tblFooter.Bottom, "</w:tr>")); }
protected override void OnPaint(PaintEventArgs e) { //base.OnPaint(e); e.Graphics.SetClip(this.ClientRectangle); var borderSize = BorderStyle == MHtmlBorderType.None ? 0 : BorderSize; var columnWidth = this.equallyColumn ? (this.Width - borderSize * 2) / this.columns.Count : 0; var y = borderSize; var x = borderSize; if (this.TableHead.Visible) { y += this.TableHead.Height; } if (this.columnHeadVisible) { y += this.columnHeadHeight; } if (Rows == null || Rows.Count == 0) { if (this.TableFooter.Visible) { TableFooter.SuspendLayout(); TableFooter.Y = y; using (var brush = new SolidBrush(TableFooter.BackColor)) { e.Graphics.FillRectangle(brush, TableFooter.Rectangle); } TableFooter.PerformLayout(); y += TableFooter.Height; } } else { #region 行数据 var head = 0; if (this.ColumnHeadVisible) { head += this.ColumnHeadHeight; } if (this.TableHead.Visible) { head += this.TableHead.Height; } //RowHeight = (this.Height - head - borderSize * 2) / Rows.Count; var g = e.Graphics; g.SmoothingMode = SmoothingMode.AntiAlias; #region 画行 foreach (var row in Rows) { var rowRect = new Rectangle(x, y, this.Width - borderSize * 2, row.Height == 0 ? RowHeight : row.Height); // 画行下划线,最后一行没有线条 if ((row.Index < Rows.Count - 1 || this.TableFooter.Visible) && HorizontalBorderStyle != MHtmlBorderType.None) { using (var pen = new Pen(HorizontalBorderColor.IsEmpty ? BorderColor : HorizontalBorderColor, HorizontalBorderSize)) { pen.DashStyle = GetDashStyle(HorizontalBorderStyle); g.DrawLine(pen, rowRect.X + HorizontalBorderOffset, rowRect.Y + rowRect.Height, rowRect.X + rowRect.Width - HorizontalBorderOffset, rowRect.Y + rowRect.Height); } } var cx = x; var cy = rowRect.Y; foreach (var cell in row) { cell.SuspendLayout(); var cellRect = new Rectangle(cx, cy, columns[cell.Index].Width == 0 ? columnWidth : columns[cell.Index].Width, rowRect.Height); cell.Rectangle = cellRect; #region 单元格背景 if (!cell.BackColor.IsEmpty) { using (var brush = new SolidBrush(cell.BackColor)) { g.FillRectangle(brush, cellRect); } } #endregion #region 单元格边框 if (cell.Index < row.Count - 1 && VerticalBorderStyle != MHtmlBorderType.None) { using (var pen = new Pen(VerticalBorderColor.IsEmpty ? BorderColor : VerticalBorderColor, VerticalBorderSize == 0 ? BorderSize : VerticalBorderSize)) { g.DrawLine(pen, cellRect.X + cellRect.Width - pen.Width, cellRect.Y + VerticalBorderOffset, cellRect.X + cellRect.Width - pen.Width, cellRect.Y + cellRect.Height - VerticalBorderOffset); } } #endregion #region if (cell.Align == TextAlignment.None) { cell.Align = columns[cell.Index].Align; } if (cell.Font == null) { cell.Font = this.Font; } if (cell.ForeColor.IsEmpty) { cell.ForeColor = this.ForeColor; } cell.Draw(g); cell.PerformLayout(); #endregion cx += cellRect.Width; } y += rowRect.Height; } #endregion if (this.TableFooter.Visible) { this.TableFooter.SuspendLayout(); TableFooter.Y = y + (HorizontalBorderSize == 0 ? borderSize : HorizontalBorderSize); this.TableFooter.Draw(g); this.TableFooter.PerformLayout(); y += TableFooter.Height; } #endregion } if (y > this.Height) { this.Height = y; } }
static StandardElementMapping() { foObjs = new Hashtable(); // Declarations and Pagination and Layout Formatting Objects foObjs.Add("root", Root.GetMaker()); foObjs.Add("declarations", Declarations.GetMaker()); foObjs.Add("color-profile", ColorProfile.GetMaker()); foObjs.Add("page-sequence", PageSequence.GetMaker()); foObjs.Add("layout-master-set", LayoutMasterSet.GetMaker()); foObjs.Add("page-sequence-master", PageSequenceMaster.GetMaker()); foObjs.Add("single-page-master-reference", SinglePageMasterReference.GetMaker()); foObjs.Add("repeatable-page-master-reference", RepeatablePageMasterReference.GetMaker()); foObjs.Add("repeatable-page-master-alternatives", RepeatablePageMasterAlternatives.GetMaker()); foObjs.Add("conditional-page-master-reference", ConditionalPageMasterReference.GetMaker()); foObjs.Add("simple-page-master", SimplePageMaster.GetMaker()); foObjs.Add("region-body", RegionBody.GetMaker()); foObjs.Add("region-before", RegionBefore.GetMaker()); foObjs.Add("region-after", RegionAfter.GetMaker()); foObjs.Add("region-start", RegionStart.GetMaker()); foObjs.Add("region-end", RegionEnd.GetMaker()); foObjs.Add("flow", Flow.Flow.GetMaker()); foObjs.Add("static-content", StaticContent.GetMaker()); foObjs.Add("title", Title.GetMaker()); // Block-level Formatting Objects foObjs.Add("block", Block.GetMaker()); foObjs.Add("block-container", BlockContainer.GetMaker()); // Inline-level Formatting Objects foObjs.Add("bidi-override", BidiOverride.GetMaker()); foObjs.Add("character", Character.GetMaker()); foObjs.Add("initial-property-set", InitialPropertySet.GetMaker()); foObjs.Add("external-graphic", ExternalGraphic.GetMaker()); foObjs.Add("instream-foreign-object", InstreamForeignObject.GetMaker()); foObjs.Add("inline", Inline.GetMaker()); foObjs.Add("inline-container", InlineContainer.GetMaker()); foObjs.Add("leader", Leader.GetMaker()); foObjs.Add("page-number", PageNumber.GetMaker()); foObjs.Add("page-number-citation", PageNumberCitation.GetMaker()); // Formatting Objects for Tables foObjs.Add("table-and-caption", TableAndCaption.GetMaker()); foObjs.Add("table", Table.GetMaker()); foObjs.Add("table-column", TableColumn.GetMaker()); foObjs.Add("table-caption", TableCaption.GetMaker()); foObjs.Add("table-header", TableHeader.GetMaker()); foObjs.Add("table-footer", TableFooter.GetMaker()); foObjs.Add("table-body", TableBody.GetMaker()); foObjs.Add("table-row", TableRow.GetMaker()); foObjs.Add("table-cell", TableCell.GetMaker()); // Formatting Objects for Lists foObjs.Add("list-block", ListBlock.GetMaker()); foObjs.Add("list-item", ListItem.GetMaker()); foObjs.Add("list-item-body", ListItemBody.GetMaker()); foObjs.Add("list-item-label", ListItemLabel.GetMaker()); // Dynamic Effects: Link and Multi Formatting Objects foObjs.Add("basic-link", BasicLink.GetMaker()); foObjs.Add("multi-switch", MultiSwitch.GetMaker()); foObjs.Add("multi-case", MultiCase.GetMaker()); foObjs.Add("multi-toggle", MultiToggle.GetMaker()); foObjs.Add("multi-properties", MultiProperties.GetMaker()); foObjs.Add("multi-property-set", MultiPropertySet.GetMaker()); // Out-of-Line Formatting Objects foObjs.Add("float", Float.GetMaker()); foObjs.Add("footnote", Footnote.GetMaker()); foObjs.Add("footnote-body", FootnoteBody.GetMaker()); // Other Formatting Objects foObjs.Add("wrapper", Wrapper.GetMaker()); foObjs.Add("marker", Marker.GetMaker()); foObjs.Add("retrieve-marker", RetrieveMarker.GetMaker()); }
public static IItemWriter <T, TableContent> Footer <T>(this IItemWriter <T, TableContent> target, TableFooter value) where T : Table { target.Item.Footer = value; return(target); }
public Table() { Head = new TableHead(); Footer = new TableFooter(); Body = new TableBody(); }