예제 #1
0
        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());
        }
예제 #2
0
 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();
 }
예제 #3
0
        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>"));
        }
예제 #4
0
        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());
        }
예제 #6
0
 public static IItemWriter <T, TableContent> Footer <T>(this IItemWriter <T, TableContent> target, TableFooter value)
     where T : Table
 {
     target.Item.Footer = value;
     return(target);
 }
예제 #7
0
 public Table()
 {
     Head   = new TableHead();
     Footer = new TableFooter();
     Body   = new TableBody();
 }