2016-08-24 3 views
2

Ich verwende Datentabelle, um einige Werte aus einer Datenbanktabelle zu erhalten.Entfernen Sie die erste Spalte aus der Datentabelle

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

Der obige Code gibt mir diese Ausgabe: enter image description here Die Säule wurde mit 0 0 von der ID-Spalte meiner Tabelle erzeugt wird. Ich habe die ID nicht über meine gespeicherte Prozedur weitergegeben, da ich sie nicht anzeigen muss. Gibt es eine Möglichkeit, die erste Spalte selbst zu entfernen und zu verhindern, dass sie angezeigt wird?

Antwort

2

Sie können sich auch für statt FOREACH verwenden und von 1 statt 0

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

Ich habe dies verwendet und jetzt bekomme ich Fehler bei Zeile html.Append (row [column.ColumnName]) ;. Wie löse ich das? @ Shannon –

+1

ok habe es. machte diese klitzekleine Veränderung weiter "html.Append (row [i]);" –

+0

Ja - wenn Sie von der Enumeration zum Index wechseln, müssen Sie immer den Indexwert angeben. Es ist IMMER rudern [I]. Tut mir leid, ich habe das nicht früher gesehen und bin froh, dass du es repariert hast! –

3

Verwenden Sie einfach Linq Skip:

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

Prob am besten überprüfen, dass es zu genügend Spalten:

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

versuchte dies und fügte hinzu, System.Linq-Namespace zu, aber es sagt 'DataColumnCollection' enthält keine Definition für Skip. Wie löse ich das bitte –

+1

verwenden .asenumerable – Neil

+0

Ja, Sie müssen Fall als IEnumerable. Aktualisiert – Liam

0
dt.Columns.RemoveAt(0); 

Entfernen Sie einfach die Spalte an der angegebenen Position.

0

Ich war auf der Suche nach der gleichen Sache starten, und ich fand this answer.

Gutschrift für: Zortkun.

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

Es funktionierte für mich.

Verwandte Themen