2016-08-24 119 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]);。我該如何解決這個問題? @Shannon –

+1

沒問題。做了這個小小的更改 「html.Append(row [i]);」 –

+0

是的 - 當您從枚舉切換到索引時,您總是需要提供索引值。它總是排[我]。對不起,我沒有看到這一點,很高興你解決它! –

3

只需使用Linq Skip

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

習題最好檢查一下有足夠的列太:

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); 

在指定的位置只是刪除該列。

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>"); 
    } 
    } 

它爲我工作。