2010-11-05 26 views

Respuesta

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

+1 porque olvidé .Rows. – GendoIkari

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

ACTUALIZADO añadir .Rows.

1

Lo mismo excepto que se usa un bucle for. Es realmente una cuestión de preferencia. Pruebe el siguiente código ..

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

Eso funcionaría, pero no puedo imaginar por qué alguna vez usarías eso; es solo un montón de código adicional. – GendoIkari

1

Si Usted desea cambiar una columna especificada puede utilizar el código anterior, pero si desea cambiar el contenido de cada una de las células en una tabla de datos a continuación, tenemos que crear otra Datatable y vincúlelo de la siguiente manera con "Importar fila". Si no creamos otra tabla, arrojará una excepción que diga "Colección modificada".

Tenga en cuenta el siguiente código.

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

Esto tendrá todas las células anteriores con un paréntesis ({)

Cuestiones relacionadas