首页 > 解决方案 > C# HTML 表的输出格式不正确

问题描述

我正在形成一个HTML字符串格式的表格,以解析回另一个函数以显示在电子邮件中。

但是,我觉得我错过了很多东西,因为我无法让表格出现在正确的输出中。

下面是我的代码片段:

var table = new HtmlTable();
var mailMessage = new StringBuilder();
string html;

HtmlTableRow row;
HtmlTableCell cell;

row = new HtmlTableRow();

row.Cells.Add(new HtmlTableCell { InnerText = "First Name" });
row.Cells.Add(new HtmlTableCell { InnerText = "Last Name" });
row.Cells.Add(new HtmlTableCell { InnerText = "Age" });

table.Rows.Add(row); //seems to not adding a new row at this statement

row.Cells.Add(new HtmlTableCell { InnerText = "Jane" });
row.Cells.Add(new HtmlTableCell { InnerText = "Doe" });
row.Cells.Add(new HtmlTableCell { InnerText = "29" });

using (var sw = new StringWriter()){
    table.RenderControl(new HtmlTextWriter(sw));
    html = sw.ToString();
}

mailMessage.AppendFormat(html);
Console.WriteLine(mailMessage.ToString());

输出:

<table>
        <tr>
                <td>First Name</td>
                <td>Last Name</td>
                <td>Age</td>
                <td>Jane</td>
                <td>Doe</td>
                <td>29</td>
        </tr>
</table>

标签: c#htmlhtml-table

解决方案


在你的代码之后试试这个:

table.Rows.Add(row);

row = new HtmlTableRow();

并在设置数据 td 后,再次使用将第二行添加到表中

table.Rows.Add(row);

添加行变量后,您需要重新初始化它。

因此,您的代码现在如下所示:

row = new HtmlTableRow();

row.Cells.Add(new HtmlTableCell { InnerText = "First Name" });
row.Cells.Add(new HtmlTableCell { InnerText = "Last Name" });
row.Cells.Add(new HtmlTableCell { InnerText = "Age" });

table.Rows.Add(row); //Add First Row.
row = new HtmlTableRow(); // Reinitialize Row

row.Cells.Add(new HtmlTableCell { InnerText = "Jane" });
row.Cells.Add(new HtmlTableCell { InnerText = "Doe" });
row.Cells.Add(new HtmlTableCell { InnerText = "29" });

table.Rows.Add(row); // Add Second Row

或者更好地使用另一个变量来消除歧义。像headerRow、firstRow 左右。


推荐阅读