Seleccionar una fila en DataGridView mediante programación


109

¿Cómo puedo seleccionar un rango particular de filas en un DataGridViewprograma en tiempo de ejecución?

Respuestas:


127

No probado, pero creo que puede hacer lo siguiente:

dataGrid.Rows[index].Selected = true;

o puede hacer lo siguiente (pero nuevamente: no probado):

dataGrid.SelectedRows.Clear();
foreach(DataGridViewRow row in dataGrid.Rows)
{
    if(YOUR CONDITION)
       row.Selected = true;
}

Tenga cuidado si su DataGridView es read-only, entonces SelectedRows.Clear()no funcionará.
Derek W

14
En lugar de SelectedRows.Clear () use el método ClearSelection () de la instancia de datagridview
Furkan

1
@Furkan: Eso no hace lo mismo. Con SelectedRows.Clear()solo se borran las filas seleccionadas, pero ClearSelection()también con las columnas => las selecciones de columnas se pierden ...
Christoph Fink

17
agregue una línea de códigodataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
Timeless

2
@Timeless: el evento SelectionChanged no parece activarse al probar su sugerencia.
user2430797

34

En Visual Basic, haga esto para seleccionar una fila en un DataGridView; la fila seleccionada aparecerá con un color resaltado, pero tenga en cuenta que la posición del cursor no cambiará:

Grid.Rows(0).Selected = True

Haga esto cambiar la posición del cursor:

Grid.CurrentCell = Grid.Rows(0).Cells(0)

La combinación de las líneas de arriba colocará el cursor y seleccionará una fila. Este es el procedimiento estándar para enfocar y seleccionar una fila en un DataGridView:

Grid.CurrentCell = Grid.Rows(0).Cells(0)
Grid.Rows(0).Selected = True

Grid.Rows (0) .Cells (0) es muy útil en el caso de datos de la cuadrícula más largos que el área de visualización de la cuadrícula. El orden mencionado anteriormente no es necesario, puede deslizar el código para la selección de fila / celda [fuente: Probado personalmente].
BiLaL

¿Cómo mover la cuadrícula a la posición seleccionada? La fila está seleccionada pero la posición de la cuadrícula no está en la fila seleccionada. El desplazamiento manual muestra la fila seleccionada. ¿Cómo forzar el desplazamiento de la cuadrícula?
FrenkyB

Ver eso: FirstDisplayedScrollingRowIndex
Rodrigo T.

12
DataGridView.Rows
    .OfType<DataGridViewRow>()
     .Where(x => (int)x.Cells["Id"].Value == pId)
     .ToArray<DataGridViewRow>()[0]
     .Selected = true;

0
 <GridViewName>.ClearSelection(); ----------------------------------------------------1
 foreach(var item in itemList) -------------------------------------------------------2
 {
    rowHandle =<GridViewName>.LocateByValue("UniqueProperty_Name", item.unique_id );--3
    if (rowHandle != GridControl.InvalidRowHandle)------------------------------------4
    {
        <GridViewName>.SelectRow(rowHandle);------------------------------------ -----5
    }
  }
  1. Borrar toda la selección anterior.
  2. Es necesario seleccionar las filas en bucle en su cuadrícula.
  3. Obtenga sus identificadores de fila de la cuadrícula (tenga en cuenta que la cuadrícula ya está actualizada con nuevas filas)
  4. Comprobando si el identificador de fila es válido o no.
  5. Cuando sea válido el identificador de fila, selecciónelo.

Donde itemList es una lista de filas que se seleccionarán en la vista de cuadrícula.




-1

Al configurar una fila seleccionada de un DataGridView en el momento de la carga, considere la posibilidad de manejar esto en el evento DataBindingComplete, porque se puede sobrescribir de forma predeterminada.


-1

Prueba esto:

DataGridViewRow row = dataGridView1.Rows[index row you want];
dataGridView1.CurrentRow = row;

¡Espero que esto ayude!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.