此函数返回一个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代码?
答案 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
是字符串。
为什么不创建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());