2010-11-05 11 views

risposta

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

+1 perché ho dimenticato .Rows. – GendoIkari

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

AGGIORNATO aggiungere .Rows.

1

La stessa cosa tranne che utilizzando un ciclo for. È davvero una questione di preferenza. Provate il seguente codice ..

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

Funzionerebbe, ma non riesco a immaginare perché lo useresti mai; è solo un sacco di codice in più. – GendoIkari

1

Se si desidera modificare una colonna specificata è possibile utilizzare il codice di cui sopra, ma se si desidera modificare il contenuto di ogni singola cellula in un DataTable allora abbiamo bisogno di creare un altro Datatable e associare come segue utilizzando "Import Row", Se non creiamo un'altra tabella, verrà generata un'eccezione che dice "Collection was Modified".

Considerare il seguente codice.

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

Questo avrà tutte le celle precedenti con Paranthesis ({)

Problemi correlati