2016-08-24 9 views
2

Datatableを使用してデータベーステーブルから値を取得しています。最初の列をデータテーブルから削除します

DataTable dt = this.GetData(); 
StringBuilder html = new StringBuilder(); 
html.Append("<table border = '1'>"); 
foreach (DataRow row in dt.Rows) 
    { 
     html.Append("<tr>"); 
     foreach (DataColumn column in dt.Columns) 
      { 
       html.Append("<td>"); 
       html.Append(row[column.ColumnName]); 
       html.Append("</td>"); 
      } 
      html.Append("</tr>"); 
     } 
     html.Append("</table>"); 

上記のコードは私にこの出力を与える: enter image description here 0 0との列が私のテーブルのID列から生成されます。私はそれらを表示する必要はないので、私のストアドプロシージャを介してIDを渡さなかった。最初の列自体を削除し、それが表示されないようにする方法はありますか?

答えて

2

あなたはまた、代わりにFOREACHのに使用すると、1ではなく0

for(int i=1;i<dt.Columns.Count;i++){//do whatever} 
+0

これを使用して、今度はhtml.Append(行[column.ColumnName]);行でエラーが発生しました。 @シャノン –

+1

それを得ました。 "html.Append(row [i]);" –

+0

はい - 列挙型からインデックス型に切り替えると、常にインデックス値を指定する必要があります。それは常に行[私]です。申し訳ありません、私はこれを以前に見ていなかったし、あなたがそれを修正してうれしい! –

3

だけでLINQのSkip使用:

if (dt.Columns.Length > 1) 
{ 
    foreach (DataColumn column in dt.Columns.AsEnumerable().Skip(1)) 
    ...etc 
+0

これを試して、System.Linq名前空間を追加しましたが、 'DataColumnCollection'にSkipの定義が含まれていないと表示されます。これを解決するには –

+1

.asenumerableを使用してください。 – Neil

+0

ええ、IEnumerableとして大文字と小文字を区別する必要があります。 – Liam

0
dt.Columns.RemoveAt(0); 

ちょうど指定された位置に列を削除:十分な列があまりにもそこにあることを確認するために

foreach (DataColumn column in dt.Columns.AsEnumerable().Skip(1)) 

度Prob最善を。

0

から開始することができ、私は同じことを探していた、と私はthis answerを見つけました。

信用度:Zortkun

foreach (DataColumn column in dt.Columns) 
{ 
    if (dt.Columns.IndexOf(column) != 0) 
    { 
     html.Append("<td>"); 
     html.Append(row[column.ColumnName]); 
     html.Append("</td>"); 
    } 
    } 

私のために働いた。

関連する問題