2014-10-30 92 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