2010-04-05 22 views
7

Me pregunto cuál es la mejor manera de recorrer todas las filas en una vista de cuadrícula de datos y obtener los valores de las celdas.
Esto es lo que estoy pensando hacer, pero realmente no me gusta porque si reorganizo las columnas, el código también tendrá que cambiarse.Para DataGridView, ¿cómo obtengo los valores de cada fila?

for (int i = 0; i < dataGridView.RowCount; i++) 
{ 
    string Value0 = dataGridView1.Rows[i].Cells[0]; 
    string Value1 = dataGridView1.Rows[i].Cells[1]; 
    string Value2 = dataGridView1.Rows[i].Cells[2]; 
} 

Respuesta

11

Puede utilizar un foreach para repetir las DataGridViewRow s dentro de la DataGridView y el uso de los nombres de columna para recuperar los valores de la Cells:

foreach (DataGridViewRow dr in dataGridView.Rows) 
{ 
    string col1 = dr.Cells["Col1"].Value.ToString(); 
    string col2 = dr.Cells["Col2"].Value.ToString(); 
    string col3 = dr.Cells["Col3"].Value.ToString(); 
} 
+1

Gracias, esto es lo que estaba buscando, excepto que tenía que hacer una cambio menor de "dr.Cells [" Col1 "]. ToString()" a "dr.Cells [" Col1 "]. Value.ToString()" – skid

+0

Me alegro de que funcionó para usted. Modifiqué mi respuesta para agregar 'Valor' para cualquier otra persona que encuentre esta respuesta. – CAbbott

+0

Ninja'd, estaba a punto de agregar que necesita tener el valor para obtener los datos correctos de la celda. – Justin

1

NullException puede ocurrir para evitar este error se puede modifique el código anterior como sigue

foreach (DataGridViewRow dr in dataGridView1.Rows) 
{ 
    //variables with looop through 
    string col1 = Convert.ToString(dr.Cells["col1"].Value); 
    string col2 = Convert.ToString(dr.Cells["col2"].Value); 
    string col3 = Convert.ToString(dr.Cells["col3"].Value); 
} 
Cuestiones relacionadas