none
Como hacer RRS feed

  • Pregunta

  • Hola chico yo con mis locura,estoy armando un software  que consta de 3 secciones una lado izquierdo el menu, desplegable, y el lado derecho dos paneles el superior se cargaran los formulario , despues lo llamo que se cargen en el panel correspondiente, el ultimo panel es donde iria el datagridview. todo bien en la llamada, cargar el formulario, me carga en el panel correspondiente y el datagridview carga los datos, pero al hacer clik en él, debe traspasar la informacion necesaria a los distintos textbox o demas  herramienta que utilizo.

    Pära eso traspaso el ID, el traspaso funciona pero no lo muestra el dato en el texbox, por ejemplo en region

    los codigo que uso son los siguientes en el traspaso y llamo a un metodo llamado rellenar

           private void dgv_total_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                this.ids = Convert.ToInt32(dgv_total.CurrentRow.Cells[0].Value.ToString());
                switch (pantalla)
                {
                    case "rg":
                        region rg = new region();
                        rg.rellenar(this.ids);                
                        break;
                }
            }

    el metodo rellenar(int id) es publico pero no me aparece los datos, pero me obtiene el dato.

        public void rellenar(int id)
            {
                DataTable dt = conx.popDTable("select nombre as Nombre from region where id_region = " + id + "");
                foreach (DataRow rw in dt.Rows)
                {
                    txt_nom.Text = rw["Nombre"].ToString();
                }
                btn_elim.Visible = true;
                btn_mod.Visible = true;
    
            }

    Como ven me obtiene el dato en la base de datos y ademas le pedi que los botones eliminar y modificar, que estan invisible lo muestre, perr tampoco lo hace.

    Le copio el codigo para abrir el formulario en el panel

     private void abiertohijo(Form formhijo)
            {
                if (hijoform != null)
                {
                    hijoform.Close();
                }
    
                hijoform = formhijo;
                hijoform.TopLevel = false;
                hijoform.FormBorderStyle = FormBorderStyle.None;
                hijoform.Dock = DockStyle.Fill;
                pnl_form.Controls.Add(hijoform);
                pnl_form.Tag = hijoform;
                hijoform.BringToFront();
                hijoform.Show();
    
            }

    me pueden decir que estoy haciendo mal o como se podria hacer que al apretar el datagridview se visualice el nombre de la region en el textbox y los botones. gracias

    Graciasde ante mano


    Una respuesta JP

    sábado, 18 de enero de 2020 18:48

Todas las respuestas

  • hola

    >>Le copio el codigo para abrir el formulario en el panel

    No se que haces abriendo forma dentro de paneles cuando deberias usar User Control

    no uses forms

    >>los codigo que uso son los siguientes en el traspaso y llamo a un metodo llamado rellenar

    si pones breakpoint en el codigo, puedes evaluar que ingresa ese switch ?

    Si lo hace, puede evaluar que el DataTable donde obtienes el registro retorna algun registro, quizas este filtrando de forma incorrecta

    No veo porque debes hacer un foreach cuando solo obtienes un unico registro

    Ademas deberias usar parametros y no concatenar el valor del id en un string

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 20 de enero de 2020 5:58
  • hola

    >>Le copio el codigo para abrir el formulario en el panel

    No se que haces abriendo forma dentro de paneles cuando deberias usar User Control

    no uses forms

    Por que quiero hacer algo nuevo y diferente, ademas lo encontre moderno el diseño.

    >>los codigo que uso son los siguientes en el traspaso y llamo a un metodo llamado rellenar

    si pones breakpoint en el codigo, puedes evaluar que ingresa ese switch ?

    Si funciona he ingresa al switch

    Si lo hace, puede evaluar que el DataTable donde obtienes el registro retorna algun registro, quizas este filtrando de forma incorrecta

    Si le traspasa y el datatable funciona pero no ingresa los datos al Textbox

    No veo porque debes hacer un foreach cuando solo obtienes un unico registro

    Por que es el el primero de muchos otros formulario y por suerte era un solo dato que recuperaba pero tengo otro que son como 10

    Ademas deberias usar parametros y no concatenar el valor del id en un string

    Explicate eso por favor no entendi.

    Gracias por responderme saludos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina



    Una respuesta JP

    lunes, 20 de enero de 2020 19:38
  • respondiste sobre mi respuesta y quedo todo junto, no se que has agregado

    edita la respuesta y separa lo que has agregado


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 20 de enero de 2020 19:57
  • Por que quiero hacer algo nuevo y diferente, ademas lo encontre moderno el diseño.

    Si funciona al ingresa el switch

    Por que es el el primero de muchos otros formulario y por suerte era un solo dato que recuperaba pero tengo otro que son como 10

    Ademas deberias usar parametros y no concatenar el valor del id en un string

    Explicate eso por favor no entendi.

    Gracias por responderme saludos


    Una respuesta JP

    lunes, 20 de enero de 2020 20:47
  • hola

    >>Ademas deberias usar parametros y no concatenar el valor del id en un string

    la consulta a la db deberia tener esta estructura

    using (SqlConnection con = new SqlConnection("connection string")) {
    
        string sql = "Select * from Tabla where Campo = @param1";
        SqlCommand cmd = new SqlCommand(query, con);
        cmd.Parameters.AddWithValue("@param1", valor);
    
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
    
    }

    se usan parametros no se concatena el valor en un string

    >>Por que es el el primero de muchos otros formulario y por suerte era un solo dato que recuperaba pero tengo otro que son como 10

    Pero no se usan formaularios, debes usar User Control

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 20 de enero de 2020 21:59
  • Lo que hago estimado es una clase llamada conexion y la cual tiene distintos metodos de conexion

    saludos


    Una respuesta JP

    lunes, 20 de enero de 2020 23:10
  • hola

    >>Lo que hago estimado es una clase llamada conexion y la cual tiene distintos metodos de conexion

    si esa clase que mencionas no permite usar parametros entonces no sirve

    desaconsejo crear este tipo de clases, son para problemas

    Se deberia programar con una capa de datos, orientando los metodos al negocio

    [WinForms] Edición Empleados

    al menos dos capas, una de persistencia como explico en el articulo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 20 de enero de 2020 23:26