none
CARGAR REGISTROS DE DATAGRID EN TXTBOX RRS feed

  • Pregunta

  • Hola

    Cuando selecciono la fila del datagridview, sin problema me muestra los registros que deseo en los textbox.

    El problema se me presenta cuando intento filtrar por el IdOrden o Departamento.Una vez que se filtran los registros, al seleccionar la fila, ya no arroja en las cajas de texto los valores que me traía en la primera imagen, me trae otros datos.

    Este es el código con el cual cargo los datos que deseo mostrar en el grid

     private void Refresh2()
            {
                using (Model.PagoEntities db=new Model.PagoEntities())
                {
                    var lst = from d in db.Conceptos
                               join e in db.Docmtoes on d.IdOrden equals e.IdDocumento
                               select new ConceptosAdmin()
                               {
                                   IdDocumento = e.IdDocumento,
                                   IdOrden = d.IdOrden,
                                   Proveedor = d.Proveedor,
                                   Concepto = d.Concepto1,
                                   RAD = d.RAD,
                                   Departamento = d.Departamento,
                                   FechaPreviaAut=e.FechaPreviaAut,
                                   EstatusAdmin=e.EstatusAdmin,
                                   AutPrevia_Cancela = e.AutPrevia_Cancela,
                                   ComentariosAdmin = e.ComentariosAdmin,
                                   EstatusDireccion=e.EstatusDireccion,
                                   FechaAutorizacion=e.FechaAutorizacion,
                                   Autoriza_Cancela=e.Autoriza_Cancela,
                                   ComentariosDireccion=e.ComentariosDireccion,
                               };
                    DgvLista.DataSource = lst.ToList();
                }
            }

    Con esto filtro por IdOrden, pero no se como llamar a los registros del grid(codigo del private void) para que una vez filtrado el registro los mostrara en las cajas de texto.Y como no supe como, pues pense que quizas llamando un data adapter lo conseguiría.

      private void textBox4_KeyUp(object sender, KeyEventArgs e)
            {
                using (Model.PagoEntities db = new Model.PagoEntities())
                {
    
                    con.Open();
                    SqlCommand cmd = con.CreateCommand();
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = "Select * from Conceptos where IdOrden like ('" + textBox4.Text + "%')";
                    cmd.ExecuteNonQuery();
    
                    DataTable Dt = new DataTable();
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(Dt);
                    DgvLista.DataSource = Dt;
                    con.Close();
    
    
                }    
               
            }

    Este orden que presento a continuación, son correctos para los valores que deseo mostrar en las cajas de texto.Lo hace sin problema, siempre y cuando filtre por IdOrden o Departamento.

     private void DgvLista_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                int index = e.RowIndex;
                DataGridViewRow selectedRow = DgvLista.Rows[index];
                textBox1.Text = selectedRow.Cells[0].Value.ToString();
                textBox4.Text = selectedRow.Cells[1].Value.ToString();
                TextBox11.Text = selectedRow.Cells[3].Value.ToString();
                TextBox7.Text = selectedRow.Cells[4].Value.ToString();
                TextBox9.Text = selectedRow.Cells[5].Value.ToString();
            }

    Cualquier sugerencia se los agradecería.


    • Editado MarZav lunes, 29 de junio de 2020 2:00 correccion en un texto
    lunes, 29 de junio de 2020 1:58

Respuestas

  • hola

    Porque usas un LIKE para filtrar un campo que es la key de la tabla? eso esta mal se usa una coincidencia exacta cuando buscar por Id

    Si usas el LIKE vas a tecuperar todos los registros que comiencen con ese numerico, y tu solo quieres uno solo que coincida con esa busqueda

    Ademas estas usando linq, porque vuelves a ado.net, usa el where de linq

    Operaciones básicas de consulta LINQ (C#)

    int idOrden = 0; if(!int.TryParse(textBox4.Text, out idOrden)){

    return; //pasara por aqui si ingreso un contenido no numerico

    } var lst = from d in db.Conceptos join e in db.Docmtoes on d.IdOrden equals e.IdDocumento where d.IdOrder == idOrder //resto del linq

    var concepto = lst.FirstOrDefault();

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta MarZav lunes, 29 de junio de 2020 16:59
    lunes, 29 de junio de 2020 5:39
  • Hola MarZav, 

      

    ¿Alguna novedad sobre la consulta realizada? ¿Han sido útiles las  respuestas proporcionadas?  

    Espero su respuesta.  

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte. 

    Gracias por usar los foros de MSDN.  

    Eric Ruiz

    ____________________________  

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    • Marcado como respuesta MarZav miércoles, 1 de julio de 2020 18:50
    lunes, 29 de junio de 2020 18:41
    Moderador

Todas las respuestas

  • hola

    Porque usas un LIKE para filtrar un campo que es la key de la tabla? eso esta mal se usa una coincidencia exacta cuando buscar por Id

    Si usas el LIKE vas a tecuperar todos los registros que comiencen con ese numerico, y tu solo quieres uno solo que coincida con esa busqueda

    Ademas estas usando linq, porque vuelves a ado.net, usa el where de linq

    Operaciones básicas de consulta LINQ (C#)

    int idOrden = 0; if(!int.TryParse(textBox4.Text, out idOrden)){

    return; //pasara por aqui si ingreso un contenido no numerico

    } var lst = from d in db.Conceptos join e in db.Docmtoes on d.IdOrden equals e.IdDocumento where d.IdOrder == idOrder //resto del linq

    var concepto = lst.FirstOrDefault();

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta MarZav lunes, 29 de junio de 2020 16:59
    lunes, 29 de junio de 2020 5:39
  • De nuevo mil gracias Leandro.
    lunes, 29 de junio de 2020 16:59
  • Hola MarZav, 

      

    ¿Alguna novedad sobre la consulta realizada? ¿Han sido útiles las  respuestas proporcionadas?  

    Espero su respuesta.  

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte. 

    Gracias por usar los foros de MSDN.  

    Eric Ruiz

    ____________________________  

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    • Marcado como respuesta MarZav miércoles, 1 de julio de 2020 18:50
    lunes, 29 de junio de 2020 18:41
    Moderador