c# - 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>
解决方案
在你的代码之后试试这个:
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 左右。
推荐阅读
- python - 根据前几行在 Pandas 中生成列值
- json - json vs jinja2 模板渲染
- r - 重塑R中的矩阵并将每n行转换为一行
- ios - UIView iOS Swift下的多个阴影
- python - Seaborn 联合图显示注释
- java - Room SQLite - 如何使 SELECT 返回 1 个对象?
- r - 根据 R 中另一个矩阵给出的位置更改一个矩阵中的元素
- java - 如何获取同时包含 JSON 对象和数组的 JSON 数据
- selenium - 通过 Selenium 与 IE 11 一起使用的正确 IEDriverServer 版本是什么
- c# - C# 如何提高 Direct2D 绘图的效率