2010-08-23 8 views
6

Tengo una tabla que estoy mostrando en un control de vista de cuadrícula de datos. El usuario selecciona una sola fila del control y presiona un botón. Necesito recuperar las celdas de esa fila y almacenarlas como cadenas.¿Cómo obtengo los datos de fila seleccionados de una vista de cuadrícula de datos usando SelectedRows?

¿Cómo obtengo los datos usando el método SelectedRow? He estado trabajando en esto durante varias horas y estoy al final de mi cuerda. Aquí está un ejemplo de algo que he intentado:

DataGridViewCellCollection selRowData = dataGridView1.SelectedRows[0].Cells; 

Si intento acceder a selRowData [x], el valor de retorno no contiene mis datos.

+0

respuesta [aquí] [1] itera a través de todas las células para construir una cadena de texto. [1]: http://stackoverflow.com/a/10525686 – ZMan

Respuesta

7

estás cerca - es necesario hacer referencia a cada Cell través de su índice y volver a su Value propiedad:

string firstCellValue = dataGridView1.SelectedRows[0].Cells[0].Value; 
string secondCellValue = dataGridView1.SelectedRows[0].Cells[1].Value; 

etc.

1

pruebe a utilizar el elemento Item de la DGV.

dgvFoo.Item(0, dgvFoo.CurrentRow.Index).Value 

Eso devolvería el valor del primer artículo. Podrías poner eso en un ciclo for para obtenerlos a todos.

Otra opción sería utilizar la colección SelectedRows en el objeto e iterar a través de cada fila seleccionada (o solo la de su caso).

1

bien no hay ninguna propiedad DataGridView artículo .. @ solución Jay Riggs es mejor ... Después solución también funciona:

string firstCellValue = dataGridView1[0,dataGridView1.CurrentRow.Index].Value.ToString(); 
string secondCellValue = dataGridView1[0,dataGridView1.CurrentRow.Index].Value.ToString(); 

Aquí 0 es la primera columna y dataGridView1.CurrentRow.Index es la fila actual de donde obtener valor

1

Si desea que los datos y los datos probablemente están obligados a una fuente de datos, entonces podría sugerir que se obtiene la clave de la selección, y entonces usted puede utilizar eso para acceder a los datos de la forma que desee:

dataGridView.SelectedDataKey.Value; 
0

Quizás esta es una solución más adecuada utilizar los valores de las celdas de la fila pulsada:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.RowIndex > -1) 
    { 
    var val = this.dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString(); 
    } 
} 
Cuestiones relacionadas