获取HTMLTable C的InnerHtml#

时间:2012-03-20 18:56:28

标签: c# html .net winforms html-table

此函数返回一个HTML表格:

private HtmlTable ConvertToHtml(DataTable dataTable)
        {
            var htmlTable = new HtmlTable();
            if (dataTable == null) return htmlTable; //null reference, empty table

            HtmlTableRow htmlRow = new HtmlTableRow();
            htmlTable.Rows.Add(htmlRow);

            foreach (DataColumn column in dataTable.Columns)
                htmlRow.Cells.Add(new HtmlTableCell() { InnerText = column.ColumnName });

            foreach (DataRow row in dataTable.Rows)
            {
                htmlRow = new HtmlTableRow();
                htmlTable.Rows.Add(htmlRow);

                foreach (DataColumn column in dataTable.Columns)
                    htmlRow.Cells.Add(new HtmlTableCell() { InnerText = row[column].ToString() });
            }

            return htmlTable;
        }

我想知道如何获得innerHTML的{​​{1}}。

目前,我这样做:

HtmlTable

但是它说它没有这样的属性。

如何获取表格的HTML代码?

3 个答案:

答案 0 :(得分:6)

您可以使用HtmlTable.RenderControl()方法。

示例:

StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);

HtmlTable.RenderControl(hw);
String HTMLContent = sb.ToString();

答案 1 :(得分:1)

您已将InnerText写为属性,您应该写InnerHtml。并且ToString()不需要HtmlTable.InnerHtml是字符串。

请参阅HtmlTable.InnerHtml


为什么不创建html而不是使用HtmlTable?而不是TableRow,你只需在“cell”-loop之前和“cell”-loop之后使用。当你编写一个单元格时,你只需要写'value'。'没有任何理由使用HtmlTable来创建表格html字符串。


private string ConvertToHtml(DataTable dataTable)
{
    StringBuilder sb = new StringBuilder();

    sb.Append("<table>");

    if (dataTable != null)
    {
        sb.Append("<tr>");

        foreach (DataColumn column in dataTable.Columns)
            sb.AppendFormat("<td>{0}</td>", HttpUtility.HtmlEncode(column.ColumnName));
        sb.Append("</tr>");

        foreach (DataRow row in dataTable.Rows)
        {
            sb.Append("<tr>");

            foreach (DataColumn column in dataTable.Columns)
                sb.AppendFormat("<td>{0}</td>", HttpUtility.HtmlEncode(row[column]));

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

    }

    sb.Append("</table>");
    return sb.ToString();
}

答案 2 :(得分:1)

根据Leon的回答,使用带有OP代码的HtmlTable.RenderControl():

StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);

var bodyhtml = ConvertToHtml(r.tblSalesVolume);

bodyhtml.RenderControl(hw);
MessageBox.Show(sb.ToString());