2016-12-18 4 views
0

htmlページには多くの要素がありますが、そのうちの1つはテーブルです。どのように私は、テーブル内の値を取得し、私が使用してグリッドビューにHTML敏捷性のasp.net C#のhtmlテーブルからfillviewを作成するC#

それらを追加することができますこれは私の裁判

HtmlNodeCollection tables = pag1.Html.SelectNodes("//table[@id='data']"); 

DataTable tb = new DataTable(); 
HtmlNodeCollection rows = tables[0].SelectNodes("tr"); 
for (int i = 0; i <= rows.Count - 1; i++) 
{ 
    HtmlNodeCollection cols = rows[i].SelectNodes("td"); 
    if (cols != null) 
    { 
     for (int j = 0; j <= cols.Count - 1; j++) 
     { 
      tb.Columns.Add(cols[j].InnerText); 

     } 

    } 
} 
GridView1.DataSource = tb; 
GridView1.DataBind(); 

この表

<table cellspacing="0" cellpadding="3" rules="cols" id="page1"> 
    <tr> 
     <th scope="col">h1</th> 
     <th scope="col">h2</th> 
     <th scope="col">h3 </th> 
     <th scope="col"> h4</th> 
     <th scope="col"> h5</th> 
    </tr> 
    <tr > 
     <td><input type="button" value="edit" onclick="javascript:__doPostBack()" /></td> 
     <td>value 1</td> 
     <td>value 2 </td> 
     <td>value 3</td> 
     <td>value 4</td> 
    </tr> 
    <tr> 
     <td><input type="button" value="edit" onclick="javascript:__doPostBack()" /></td> 
     <td>value 1</td> 
     <td>value 2 </td> 
     <td>value 3</td> 
     <td>value 4</td> 
    </tr> 
    <tr> 
     <td><input type="button" value="edit" onclick="javascript:__doPostBack()" /></td> 
     <td>value 1</td> 
     <td>value 2 </td> 
     <td>value 3</td> 
     <td>value 4</td> 
    </tr> 
</table> 
+0

何が問題なのですか? – CodingYoshi

+0

エラーが発生しました 'xxx'という名前の列が既にこのDataTableに属しています。テーブルのヘッダーを取得できません –

+0

テーブルのHTMLを確認できますか – CodingYoshi

答えて

1

てみて、追加でまず列を作成し、次に表を埋める。 HTMLAgilityを使用していないため、コードがコンパイルされる可能性がありますが、間違いなくあなたをガイドします。

HtmlNodeCollection tables = pag1.Html.SelectNodes("//table[@id='data']"); 

DataTable tb = new DataTable(); 
HtmlNodeCollection rows = tables[0].SelectNodes("tr"); 

// create the columns 
HtmlNodeCollection cols = rows[0].SelectNodes("th"); 
if (cols != null) 
{ 
    for (int j = 0; j <= cols.Count - 1; j++) 
    { 
     tb.Columns.Add(cols[j].InnerText); 
    } 
} 

// Now fill the table 
for (int i = 0; i <= rows.Count - 1; i++) 
{ 
    var newRow = tb.NewRow(); 
    HtmlNodeCollection cols = rows[i].SelectNodes("td"); 
    if (cols != null) 
    { 
     for (int j = 0; j <= cols.Count - 1; j++) 
     { 
      newRow[j] = cols[j].InnerText; 
     } 

    } 

    // add the row to table 
    tb.Rows.Add(newRow); 
} 
GridView1.DataSource = tb; 
GridView1.DataBind(); 
+0

それが正常に動作し、多くの感謝 –

+0

何もします。

+0

私はこのコードを使用しましたが、テーブル文字列xx = Regex.Replace(text、@ "<[! \ W *?] *?[/] *?\ w +。*?> "、string.Empty).Trim(); –

関連する問題