Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取HTMLTable C的InnerHtml#_C#_Html_.net_Winforms_Html Table - Fatal编程技术网

C# 获取HTMLTable C的InnerHtml#

C# 获取HTMLTable C的InnerHtml#,c#,html,.net,winforms,html-table,C#,Html,.net,Winforms,Html Table,此函数将返回一个HTML表: private HtmlTable ConvertToHtml(DataTable dataTable) { var htmlTable = new HtmlTable(); if (dataTable == null) return htmlTable; //null reference, empty table HtmlTableRow htmlRow = new Html

此函数将返回一个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;
        }
我想知道如何获得
HtmlTable
innerHTML

目前,我正在这样做:

        var bodyhtml = ConvertToHtml(r.tblSalesVolume);
        MessageBox.Show(bodyhtml.InnerHtml);
但它说它没有这样的属性


如何获取表的HTML代码?

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


为什么不创建html而不是使用HtmlTable呢?而不是只在“单元格”循环之前和“单元格”循环之后使用TableRow。当你写一个单元格的时候,你只需要写“value”,实际上没有任何理由使用HtmlTable来创建表格html字符串


private string ConvertToHtml(DataTable)
{
StringBuilder sb=新的StringBuilder();
某人加上(“”);
if(dataTable!=null)
{
某人加上(“”);
foreach(dataTable.Columns中的DataColumn列)
sb.AppendFormat(“{0}”,HttpUtility.HtmlEncode(column.ColumnName));
某人加上(“”);
foreach(dataTable.Rows中的DataRow行)
{
某人加上(“”);
foreach(dataTable.Columns中的DataColumn列)
sb.AppendFormat(“{0}”,HttpUtility.HtmlEncode(行[列]);
某人加上(“”);
}
}
某人加上(“”);
使某人返回字符串();
}

您可以使用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());

System.NotSupportedException未处理消息=“'HtmlTable'不支持InnerHtml属性。”我不知道这是否相关,但我正在使用winforms@Simon:链接显示“此控件不支持此属性”。@I\uuu:我猜您正在WinForms项目中引用“System.Web.UI.HtmlControls:”请勿读取此属性或为此属性赋值。否则,将引发System.NotSupportedException异常。此属性继承自HtmlContainerControl类,不适用于HtmlTable类。“重复的()重复的()错误1非静态字段、方法或对象需要对象引用。”property@I__:您必须编写
bodyHtml.RenderControl(hw);
.Bcos,这是您正在使用的对象。
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());