Получение InnerHtml HTMLTable C # - PullRequest
3 голосов
/ 20 марта 2012

Эта функция возвращает таблицу 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 из HtmlTable.

В настоящее время я делаю это:

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

но там написано, что у него нет такого свойства.

Как получить код HTML для таблицы?

Ответы [ 3 ]

6 голосов
/ 20 марта 2012

Вы можете использовать метод HtmlTable.RenderControl ().

Пример:

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

HtmlTable.RenderControl(hw);
String HTMLContent = sb.ToString();
1 голос
/ 20 марта 2012

На основании ответа Леона, используя 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());
1 голос
/ 20 марта 2012

Вы написали InnerText как свойство, вы должны написать InnerHtml.И нет необходимости в ToString(), поскольку HtmlTable.InnerHtml является строкой.

См. HtmlTable.InnerHtml

почему бы вам просто не создать html вместо использования HtmlTable?вместо TableRow вы просто используете до "cell" -loop и после "cell" -loop.и когда вы пишете ячейку, вы просто пишете «значение». На самом деле нет никаких причин использовать 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...