Getting the InnerHtml of an HTMLTable C#

本文关键字:HTMLTable an of the InnerHtml Getting | 更新日期: 2023-09-27 18:28:29

此函数返回一个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;
        }

我想知道如何获得HtmlTableinnerHTML

目前,我正在做这个:

        var bodyhtml = ConvertToHtml(r.tblSalesVolume);
        MessageBox.Show(bodyhtml.InnerHtml);

但它说它没有这样的财产。

如何获取表的HTML代码?

Getting the InnerHtml of an HTMLTable C#

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

示例:

StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);
HtmlTable.RenderControl(hw);
String HTMLContent = sb.ToString();

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

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());

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

参见HtmlTable.InnerHtml


为什么不直接创建html而不是使用HtmlTable呢?而不是TableRow,您只在"cell"-循环之前和"cell"-循环之后使用。当你写一个单元格时,你只写"值"。´确实没有任何理由使用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();
}