none
Pintar un dataGridView desde otro formulario RRS feed

  • Pregunta

  • Tengo un formulario donde tengo un DataGridView, y unos controles de usuarios que significan averias. Cada control de usuario contiene un boton con el cual llamo a un metodo del primer formulario donde pinta todas las lineas. Cuando clicko en el boton llamo a dicho metodo, cargo el dataGridView porque sino esta vacio y lo pinto linea a linea. Cuando termina me doy cuenta que las lineas no han sido pintadas y nose porque.

    Si alguno me puede dar alguna idea sobre que puede estar pasando lo agradeceria infinitamente.

    Muchisimas gracias, un saludo!

    martes, 12 de abril de 2016 9:54

Todas las respuestas

  • Antes de adentrarnos mucho en su dilema me gustaría que me aclare algo:  ¿A qué llama usted "pintar el DGV"?  En programación de Windows Forms, que es lo que parece que usted está haciendo, "pintar" suele referirse a controlar el evento Paint de un control o un formulario.  ¿Está usted haciendo esto?

    Otra pregunta:  ¿Cómo está pasando datos al DGV?


    Jose R. MCP
    Code Samples

    martes, 12 de abril de 2016 13:53
    Moderador
  • Hola tximas, ¿qué código es el que no te funciona específicamente? ¿Podrías compartirlo para poder ayudarte?

    Saludos


    Christian Amado
    Software Engineer | MCPD: Windows Phone Developer | MCTS: Silverlight Developer
    Don't forget to mark the right answer and vote up if helps you.
    My Blog
    My code samples

    martes, 12 de abril de 2016 13:57
  •                     string Grupo = ObtnerGrupo();
                        DataTable ExpIns = new DataTable();
                        int CodInstalacion = codIns;
                        string queryExpInstalacion = "SELECT CodOperario, Nombre, Apellidos, [" + CodInstalacion + "] FROM ExperienciaOperarioInstalacion WHERE Especialidad = '" + codPro + "' AND Turno = '" + Grupo + "' ORDER BY [" + CodInstalacion + "] DESC";
                        OleDbDataAdapter adapterExpInstalacion = new OleDbDataAdapter(queryExpInstalacion, frmInicio.conexion);
                        adapterExpInstalacion.Fill(ExpIns);
    
                        Color[] colors = new Color[]
                        {
                            Color.Blue
                        };
    
                        int i = 0;
    
                        if (mostrarOp == true)
                        {
                            dgvOpLibres.DataSource = null;
                            dgvOpLibres.Rows.Clear();
                            CargarOperarios();
                        }
    
                        foreach (DataRow row in ExpIns.Rows)
                        {
                            string nombre = (string)row["Nombre"];
                            string apellidos = (string)row["Apellidos"];
    
                            foreach (DataGridViewRow fila in dgvOpLibres.Rows)
                            {
                                string nom = fila.Cells["Nombre"].Value.ToString();
                                string ape = fila.Cells["Apellidos"].Value.ToString();
    
                                if (nom == nombre && ape == apellidos)
                                {
                                    if (fila != null)
                                    {
                                        fila.DefaultCellStyle.BackColor = colors[i];
                                        i++;
                                        if (i >= colors.Length)
                                        {
                                            return;
                                        }
                                        else
                                        {
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
    
                    else if (codPro == "MEC")
                    {
                        string Grupo = ObtnerGrupo();
                        DataTable ExpIns = new DataTable();
                        int CodInstalacion = codIns;
                        string queryExpInstalacion = "SELECT CodOperario, Nombre, Apellidos, [" + CodInstalacion + "] FROM ExperienciaOperarioInstalacion WHERE Especialidad = '" + codPro + "' AND Turno = '" + Grupo + "' ORDER BY [" + CodInstalacion + "] DESC";
                        OleDbDataAdapter adapterExpInstalacion = new OleDbDataAdapter(queryExpInstalacion, frmInicio.conexion);
                        adapterExpInstalacion.Fill(ExpIns);
    
                        Color[] colors = new Color[]
                            {
                                Color.LimeGreen
                            };
    
                        int i = 0;
    
                        if (mostrarOp == true)
                        {
                            dgvOpLibres.DataSource = null;
                            dgvOpLibres.Refresh();
                            CargarOperarios();
                        }
    
                        foreach (DataRow row in ExpIns.Rows)
                        {
                            string nombre = (string)row["Nombre"];
                            string apellidos = (string)row["Apellidos"];
    
                            foreach (DataGridViewRow fila in dgvOpLibres.Rows)
                            {
                                string nom = fila.Cells["Nombre"].Value.ToString();
                                string ape = fila.Cells["Apellidos"].Value.ToString();
    
                                if (nom == nombre && ape == apellidos)
                                {
                                    if (fila != null)
                                    {
                                        fila.DefaultCellStyle.BackColor = colors[i];
                                        i++;
                                        if (i >= colors.Length)
                                        {
                                            return;
                                        }
                                        else
                                        {
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
    
                    else if (opcion == 2)
                    {
                        if (codPro == "ELE")
                        {
                            string Grupo = ObtnerGrupo();
                            string CodTecnologia = codTecno;
                            DataTable ExpTec = new DataTable();
                            string queryExpTecnologia = "SELECT CodOperario, Nombre, Apellidos, [" + CodTecnologia + "] FROM ExperenciaOperarioTecnologia WHERE Especialidad = '" + codPro + "' AND Turno = '" + Grupo + "' ORDER BY [" + CodTecnologia + "] DESC";
                            OleDbDataAdapter adapterExpInstalacion = new OleDbDataAdapter(queryExpTecnologia, frmInicio.conexion);
                            adapterExpInstalacion.Fill(ExpTec);
    
                            Color[] colors = new Color[]
                            {
                                Color.Blue
                            };
    
                            int i = 0;
    
                            if (mostrarOp == true)
                            {
                                dgvOpLibres.DataSource = null;
                                dgvOpLibres.Refresh();
                                CargarOperarios();
                            }
    
                            foreach (DataRow row in ExpTec.Rows)
                            {
                                string nombre = (string)row["Nombre"];
                                string apellidos = (string)row["Apellidos"];
                                foreach (DataGridViewRow fila in dgvOpLibres.Rows)
                                {
                                    string nom = fila.Cells["Nombre"].Value.ToString();
                                    string ape = fila.Cells["Apellidos"].Value.ToString();
    
                                    if (nom == nombre && ape == apellidos)
                                    {
                                        if (fila != null)
                                        {
                                            fila.DefaultCellStyle.BackColor = colors[i];
                                            i++;
                                            if (i >= colors.Length)
                                            {
                                                return;
                                            }
                                            else
                                            {
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        else if (codPro == "MEC")
                        {
                            string Grupo = ObtnerGrupo();
                            string CodTecnologia = codTecno;
                            DataTable ExpTec = new DataTable();
                            string queryExpTecnologia = "SELECT CodOperario, Nombre, Apellidos, [" + CodTecnologia + "] FROM ExperenciaOperarioTecnologia WHERE Especialidad = '" + codPro + "' AND Turno = '" + Grupo + "' ORDER BY [" + CodTecnologia + "] DESC";
                            OleDbDataAdapter adapterExpTecnologia = new OleDbDataAdapter(queryExpTecnologia, frmInicio.conexion);
                            adapterExpTecnologia.Fill(ExpTec);
    
                            Color[] colors = new Color[]
                            {
                                Color.LimeGreen
                            };
    
                            int i = 0;
    
                            if (mostrarOp == true)
                            {
                                dgvOpLibres.DataSource = null;
                                dgvOpLibres.Refresh();
                                CargarOperarios();
                            }
    
                            foreach (DataRow row in ExpTec.Rows)
                            {
                                string nombre = (string)row["Nombre"];
                                string apellidos = (string)row["Apellidos"];
                                foreach (DataGridViewRow fila in dgvOpLibres.Rows)
                                {
                                    string nom = fila.Cells["Nombre"].Value.ToString();
                                    string ape = fila.Cells["Apellidos"].Value.ToString();
    
                                    if (nom == nombre && ape == apellidos)
                                    {
                                        if (fila != null)
                                        {
                                            fila.DefaultCellStyle.BackColor = colors[i];
                                            i++;
                                            if (i >= colors.Length)
                                            {
                                                return;
                                            }
                                            else
                                            {
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

    Pintar le llamo a esto:

    fila.DefaultCellStyle.BackColor = colors.Green;

    y el codigo entero te lo pongo:

    miércoles, 13 de abril de 2016 10:14
    1. ¿Ya depuró su código línea por línea y se aseguró de que el código ejecuta el cambio de color?
    2. ¿Por qué tiene un arreglo de colores si siempre usa un único color?
    3. Tiene repetición de códgo:  Recuerde que si usa Copiar/Pegar más de 1 vez en un trozo de código, deténgase y piense en la forma de crear un método/función en vez de copiar y pegar.
    4. Está concatenando SQL.  Eso es muy mala práctica.  Aprenda de consultas parametrizadas.

    Jose R. MCP
    Code Samples

    miércoles, 13 de abril de 2016 14:23
    Moderador