internal override string CreateHtml()
        {
            var builder = new DynamicTextBuilder();

            builder.AddBindable(
                "Table",
                new
            {
                Id      = UIData.Id,
                Caption = UIData.Label
            });

            builder.Append("<table id='{Table.Id}'>");

            if (!String.IsNullOrEmpty(UIData.Label))
            {
                builder.Append("<caption>{Table.Caption}</caption>");
            }


            var rows     = UIData.Value as IEnumerable <TRow>;
            var rowsCont = rows.Count();

            if (rowsCont > 0)
            {
                var first      = rows.First();
                var rowType    = first.GetType();
                var properties = rowType.GetProperties();

                builder.Append("<thead><tr>");

                foreach (var p in properties)
                {
                    builder.Append("<th>");
                    builder.Append(p.Name);
                    builder.Append("</th>");
                }

                builder.Append("</tr></thead>");

                builder.Append("<tbody>");
                foreach (var r in rows)
                {
                    builder.Append("<tr>");

                    foreach (var p in properties)
                    {
                        builder.Append("<td>");
                        var v = p.GetValue(r);

                        if (v != null)
                        {
                            builder.Append(v.ToString());
                        }

                        builder.Append("</td>");
                    }

                    builder.Append("</tr>");
                }
            }

            builder.Append("</tbody>");
            builder.Append("</table>");

            return(builder.ToString());
        }