2014-10-30 55 views
0

我使用的是dataGridView1,它不能把正确的数据为:的DataGridView无法解析某些符号

=<3 

,并改变了它

=&lt;3 

我应该怎么办? 我把它从网页浏览器1的数据就像它:

string htmlCode =“”;

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
htmlCode = webBrowser1.DocumentText; 
doc.LoadHtml(htmlCode); 
dataGridView1.DataSource = ""; 
dt = new DataTable(); 
dt.Columns.Add("Name", typeof(string)); 
dt.Columns.Add("Rank", typeof(string)); 
int count = 0; 
foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table[not(@id='menutable')]")) 
{ 
    foreach (HtmlNode row in table.SelectNodes("tr")) 
    { 
     { 
      DataRow dr = dt.NewRow(); 

      foreach (var cell in row.SelectNodes("td")) 
      { 
       if ((count % 2 == 0)) 
       { 
        if (cell.InnerText != "Name") 
        { 
         dr["Name"] = cell.InnerText.Replace("&nbsp;", " "); 
        } 
       } 
       else 
       { 
        if (cell.InnerText != "Title") 
        { 
         dr["Rank"] = cell.InnerText.Replace("&nbsp;", " "); 
         dt.Rows.Add(dr); 
        } 
       } 
       if (cell.InnerText != "Name" | cell.InnerText != "Title") 
        count++; 
      } 
     } 
    } 
    dataGridView1.DataSource = dt; 
} 

请帮帮我,TNX

+2

这个数据是如何被“放”的? (问题是忘记应用HTML转义;就是这样。) – user2864740 2014-10-30 01:25:01

+0

我们需要更多信息。在DataGridView中显示'= <3'通常可以正常工作。你如何获取数据?在DataGridView中显示该字段的值是什么?你是否重写了'DataGridView'上的任何默认属性? – 2014-10-30 01:34:58

+0

我把一个webBrowser1的数据和数据在那里是真实的。 – 2014-10-30 01:41:21

回答

1

既然你是一个Web应用程序之外:

string decoded = System.Net.WebUtility.HtmlDecode(htmlEncoded); 

在你的情况

dr["ColumnName"]=System.Net.WebUtility.HtmlDecode(cell.InnerText); 

你可以约String.Replace完全忘记。

+0

我该如何使用它?你能告诉我一个例子吗? – 2014-10-30 06:39:55

+1

我编辑了原始答案。 – 2014-10-30 06:46:39

+0

这是.Net 4,我不想使用.Net 4,而不是任何方式? – 2014-10-30 20:09:11