none
Seleccionar fila de DataGrid al desplazarse con las flechas del teclado RRS feed

  • Pregunta

  • Hola!!! 

    Quisiera pedir de su ayuda para realizar lo siguiente, por que por mas que he intentado no he podido.

    Tengo un DataGrid que lleno de la siguiente forma

    dtgDatos.ItemsSource = dsConsulta.Tables[0].DefaultView;

    Una vez que lleno los datos del DataGrid lo que debo de hacer es desplazarme en la grid con las flechas del teclado, y mostrar dentro de un textbox uno de los campos de la grid en la que me encuentro. Lo que no se como hacer , obtener la fila seleccionada al desplazarme con las flechas. 

    Lo unico que pude hacer fue esto : 

                                                                           

     private void dtgDatos_CurrentCellChanged(object sender, EventArgs e)
            {


                        DataGrid dg = (DataGrid)sender;
                        DataRowView row_sel = dg.SelectedItem as DataRowView;

                        if (row_sel != null)
                        {
                            txtDevCausa.Text = row_sel["DevCausa"].ToString();
                        }



            }

    pero no funciona porque cuando me desplazo con las flechas pone mal el registro en la caja de texto txtDevCausa.Text

    Help Me!!!!! 

    miércoles, 14 de octubre de 2020 1:43

Todas las respuestas

  • Hola MLISSE

    Se poco de WPF, pero quizás

    txtDevCausa.Text = row_sel["DevCausa"].ToString();

    si es como lo es para el DataGridView de Windows Forms, sería así:

    txtDevCausa.Text = row_sel["DevCausa"].Value.ToString();

    Algo que creo que si es seguro, es que podes usar el evento CurrentRowChanged que quizás es mejor que el CurrentCellChanged, si es que estás recorriendo rows (filas)

    Saludos

    Pablo

    miércoles, 14 de octubre de 2020 3:12
  • Hola

    ¿Has logrado avanzar con tu consulta?

    Saludos

    miércoles, 14 de octubre de 2020 21:44
    Moderador
  • Hola 

    Aun no, aunque creo que formule mal mi pregunta. Lo que tengo que hacer es que cada que de Enter o presione la tecla de fecla abajo en el teclado debo avanzar un registro de mi DataGrid y mostrar el nuevo valor de la celda DevCausa en la caja de Texto.

    Gracias por leerme....

    jueves, 15 de octubre de 2020 1:28
  • Hola MLISSE

    Investigué un poco más. Hay que controlar el evento SelectionChanged, que se da al cambiar de fila.

    private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        textBox1.Text = dataGrid.SelectedItem.Row.ItemArray["DevCausa"].ToString(); 
    }
    

    Si llega a no funcionar, cambia "DevCausa" por el índice de la columna.

    Saludos

    Pablo


    lunes, 19 de octubre de 2020 1:20