none
Cargar registros de un datagridview a un ArrayList RRS feed

  • Pregunta

  • Hola gente del foro estoy realizando un programa en la que tengo una libreria de clase y en ella la Clase Dados donde tng los  atributos metodos y funciones. Esta clase hereda a la clase libros y el programa se inicia en el formulario inicio y desde ahi accedo al formulario Libros. Todo esto lo estaba haciendo en un Datatable y me funciona perfecto pero me gustaria saber como implementarlo con un ArrayList ya que me dicen que es lo mas conveniente, pero no tengo demaciadas idea de como hacerlo si pudieran ayudarme se lo agradeceria.

    A continuacion les dejo el codigo. En la clase Datos tengo declarado public ArrayList ListaLibros = new ArrayList();

    public void Guardar_Registros()
            {
    
                string Mensaje = "";
                try
                {
                    int i = Inicio.Registros();
                    if (i == 0)
                    {
                        Inicio.CrearNuevaTabla();
                    }
                    foreach (DataGridViewRow fila in dgvLibros.Rows)
                    {
                        string codigoLib = fila.Cells[0].Value.ToString();
                        string tituloLib = fila.Cells[1].Value.ToString();
                        string editorialLib = fila.Cells[2].Value.ToString();
                        string disciplinaLib = fila.Cells[3].Value.ToString();
                        string categoriaLib = fila.Cells[4].Value.ToString();
                        string edicionLib = fila.Cells[5].Value.ToString();
                        string sectorLib = fila.Cells[6].Value.ToString();
                        int numStandLib = Convert.ToInt32(fila.Cells[7].Value.ToString());
                        decimal presioLib = Convert.ToDecimal(fila.Cells[8].Value.ToString());
                        int cantidadLib = Convert.ToInt32(fila.Cells[9].Value.ToString());
                        Inicio.Parametros(codigoLib, tituloLib, editorialLib, disciplinaLib, categoriaLib, edicionLib, sectorLib,numStandLib, presioLib, cantidadLib);
                      
                    }
                }
                catch (Exception ex)
                {
                    Mensaje = ex.Message;
                }
            }
    
    //En el formulario Inicio recivo los parametros y los envia a la clase Datos al metodo Cargar_Lista_Libros
    
    public void Lista_Libros(string codigo, string titulo, string editorial, string disciplina, string categoria, string edicion,
                string sector, int numStand, decimal presio, int cantidad)
            {
                ClaseLibros.Cargar_Tabla_Libros(codigo, titulo, editorial, disciplina, categoria, edicion,
                    sector, numStand, presio, cantidad);
            }
    
    // Y cargo los registro el registro del ArrayList al datagridview mediante un radiobutton
    
    private void rdbLibros_CheckedChanged(object sender, EventArgs e)
            {
                dgvInicio.DataSource = ClaseLibros.Cargar_Lista_Libros();// ->pero esto me tira error
            }
    
    Y esta funcion la tengo en la clase Datos
    
    public ArrayList Cargar_Lista_Libros(string codigo, string titulo, string editorial, string disciplina, string categoria,
                string edicion, string sector, int numStand, decimal presio, int cantidad)
            {
                string Mensaje = "";
                try
                {
                    ListaLibros.Add(Codigo);
                    ListaLibros.Add(Titulo);
                    ListaLibros.Add(Editorial);
                    ListaLibros.Add(Disciplina);
                    ListaLibros.Add(Categoria);
                    ListaLibros.Add(Edicion);
                    ListaLibros.Add(Sector);
                    ListaLibros.Add(NumStand);
                    ListaLibros.Add(Presio);
                    ListaLibros.Add(Cantidad);
                }
                catch (Exception ex)
                {
                    Mensaje = ex.Message;
                }
    
                return ListaLibros;
            }

    jueves, 12 de diciembre de 2019 13:49

Respuestas

  • hola

    porque ArrayList ? eso no es buena idea

    Crea una clase que represente tu entidad de datos, como ser

    public class LibroEntity {
    
       public string codigo {get;set;}
       public string titulo {get;set;}
    
       //resto propiedades
    
    }


    Le puse el sufijo Entity para que no causara problemas con los nombres de tu otras clases

    La idea es que uses esa entidad por parametro

    private List<LibroEntity> ListaLibros;
    
    public void Cargar_Lista_Libros(LibroEntity item)
    {
    	ListaLibros.Add(item);
    }

    usas un List<LibroEntity>

    asi es mas facil de trabajar los datos agrupados

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 12 de diciembre de 2019 14:07
  •  Y para enviar los parametros que obtengo del datagridview Libros como los envio a la funcion Cargar_Lista_Libros();
    public void Guardar_Registros()
            {
    
                string Mensaje = "";
                try
                {
                    int i = Inicio.Registros();
                    if (i == 0)
                    {
                        Inicio.CrearNuevaTabla();
                    }
                    foreach (DataGridViewRow fila in dgvLibros.Rows)
                    {
                        string codigoLib = fila.Cells[0].Value.ToString();
                        string tituloLib = fila.Cells[1].Value.ToString();
                        string editorialLib = fila.Cells[2].Value.ToString();
                        string disciplinaLib = fila.Cells[3].Value.ToString();
                        string categoriaLib = fila.Cells[4].Value.ToString();
                        string edicionLib = fila.Cells[5].Value.ToString();
                        string sectorLib = fila.Cells[6].Value.ToString();
                        int numStandLib = Convert.ToInt32(fila.Cells[7].Value.ToString());
                        decimal presioLib = Convert.ToDecimal(fila.Cells[8].Value.ToString());
                        int cantidadLib = Convert.ToInt32(fila.Cells[9].Value.ToString());
                        Inicio.Parametros(codigoLib, tituloLib, editorialLib, disciplinaLib, categoriaLib, edicionLib, sectorLib,numStandLib, presioLib, cantidadLib);
                      
                    }
                }
                catch (Exception ex)
                {
                    Mensaje = ex.Message;
                }
            }
    
    //En el formulario Inicio recivo los parametros y los envia a la clase Datos al metodo Cargar_Lista_Libros
    
    public void Lista_Libros(string codigo, string titulo, string editorial, string disciplina, string categoria, string edicion,
                string sector, int numStand, decimal presio, int cantidad)
            {
                ClaseLibros.Cargar_Tabla_Libros(codigo, titulo, editorial, disciplina, categoria, edicion,
                    sector, numStand, presio, cantidad);
            }

    jueves, 12 de diciembre de 2019 15:14

Todas las respuestas

  • hola

    porque ArrayList ? eso no es buena idea

    Crea una clase que represente tu entidad de datos, como ser

    public class LibroEntity {
    
       public string codigo {get;set;}
       public string titulo {get;set;}
    
       //resto propiedades
    
    }


    Le puse el sufijo Entity para que no causara problemas con los nombres de tu otras clases

    La idea es que uses esa entidad por parametro

    private List<LibroEntity> ListaLibros;
    
    public void Cargar_Lista_Libros(LibroEntity item)
    {
    	ListaLibros.Add(item);
    }

    usas un List<LibroEntity>

    asi es mas facil de trabajar los datos agrupados

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 12 de diciembre de 2019 14:07
  •  Y para enviar los parametros que obtengo del datagridview Libros como los envio a la funcion Cargar_Lista_Libros();
    public void Guardar_Registros()
            {
    
                string Mensaje = "";
                try
                {
                    int i = Inicio.Registros();
                    if (i == 0)
                    {
                        Inicio.CrearNuevaTabla();
                    }
                    foreach (DataGridViewRow fila in dgvLibros.Rows)
                    {
                        string codigoLib = fila.Cells[0].Value.ToString();
                        string tituloLib = fila.Cells[1].Value.ToString();
                        string editorialLib = fila.Cells[2].Value.ToString();
                        string disciplinaLib = fila.Cells[3].Value.ToString();
                        string categoriaLib = fila.Cells[4].Value.ToString();
                        string edicionLib = fila.Cells[5].Value.ToString();
                        string sectorLib = fila.Cells[6].Value.ToString();
                        int numStandLib = Convert.ToInt32(fila.Cells[7].Value.ToString());
                        decimal presioLib = Convert.ToDecimal(fila.Cells[8].Value.ToString());
                        int cantidadLib = Convert.ToInt32(fila.Cells[9].Value.ToString());
                        Inicio.Parametros(codigoLib, tituloLib, editorialLib, disciplinaLib, categoriaLib, edicionLib, sectorLib,numStandLib, presioLib, cantidadLib);
                      
                    }
                }
                catch (Exception ex)
                {
                    Mensaje = ex.Message;
                }
            }
    
    //En el formulario Inicio recivo los parametros y los envia a la clase Datos al metodo Cargar_Lista_Libros
    
    public void Lista_Libros(string codigo, string titulo, string editorial, string disciplina, string categoria, string edicion,
                string sector, int numStand, decimal presio, int cantidad)
            {
                ClaseLibros.Cargar_Tabla_Libros(codigo, titulo, editorial, disciplina, categoria, edicion,
                    sector, numStand, presio, cantidad);
            }

    jueves, 12 de diciembre de 2019 15:14