2010-11-05 10 views

Antwort

21
foreach (DataRow row in MyDataTable.Rows) 
{ 
row["columnNameHere" Or index] = value; 
} 
+0

+1, weil ich .Rows vergessen. – GendoIkari

10
foreach (DataRow row in myDataTable.Rows) 
{ 
    //do what you need to calculate myNewValue here 
    row["myColumn"] = myNewValue; 
} 

AKTUALISIERT .Rows hinzuzufügen.

1

Die gleiche Sache außer der Verwendung einer for-Schleife. Es ist wirklich eine Frage der Präferenz. Versuchen Sie, den folgenden Code ..

for (int i = 0; i <= myDataTable.Rows.Count - 1; i++){ 
        myDataTable.Rows[i]["ColumnName" Or IndexNumber] = value; 
} 
+0

Das würde funktionieren, aber ich kann mir nicht vorstellen, warum du das jemals benutzen würdest; es ist nur eine Menge extra Code. – GendoIkari

1

Wenn Sie wollen eine bestimmte Spalte ändern Sie den obigen Code verwenden können, aber wenn Sie den Inhalt jedes einzelnen Zelle in einer Datentabelle ändern wollen, dann müssen wir einen anderen erstellen Datatable und binden Sie es wie folgt mit "Zeile importieren". Wenn wir keine andere Tabelle erstellen, wird eine Exception ausgelöst, die besagt "Sammlung wurde geändert".

Betrachten Sie den folgenden Code.

//New Datatable created which will have updated cells 
      DataTable dtUpdated=new DataTable(); 
      //This gives similar schema to the new datatable 
      dtUpdated = dtReports.Clone(); 
       foreach (DataRow row in dtReports.Rows) 
       { 
        for (int i = 0; i < dtReports.Columns.Count; i++) 
        { 
         string oldVal = row[i].ToString(); 
         string newVal = "{"+oldVal; 
         row[i] = newVal; 
        } 
        dtUpdated.ImportRow(row); 
       } 

Dies wird alle Zellen mit geklam- mert vorhergehenden haben ({)

Verwandte Themen