Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: sirfranko en 26 Abril 2011, 22:44 pm



Título: ayula con list<> en csharp
Publicado por: sirfranko en 26 Abril 2011, 22:44 pm
hola amigos soy nuevo aqui..
quiero pedirle su ayuda para resolver un problema que tengo en una aplicacion de windows form en csharp....
tengo una clase para productos
Código
  1. class productos
  2. {
  3.   string clave;
  4.  
  5. public string Clave
  6. {
  7. get { return clave; }
  8. set { clave = value; }
  9. }
  10. string nombre;
  11.  
  12. public string Nombre
  13. {
  14. get { return nombre; }
  15. set { nombre = value; }
  16. }
  17. int cantidad;
  18.  
  19. public int Cantidad
  20. {
  21. get { return cantidad; }
  22. set { cantidad = value; }
  23. }
  24. float precio;
  25.  
  26. public float Precio
  27. {
  28. get { return precio; }
  29. set { precio = value; }
  30. }
  31. string marca;
  32.  
  33. public string Marca
  34. {
  35. get { return marca; }
  36. set { marca = value; }
  37. }
  38. string fechaCaducidad;
  39.  
  40. public string FechaCaducidad
  41. {
  42. get { return fechaCaducidad; }
  43. set { fechaCaducidad = value; }
  44. }
  45.  
  46. string comentario;
  47.  
  48. public string Comentario
  49. {
  50. get { return comentario; }
  51. set { comentario = value; }
  52. }
  53. public byte[] Imagen
  54. { get; set; }//es para almacenar imagen en la lista
  55. }
  56. }

una clase de operaciones productos...
Código
  1. class operacionesProductos
  2. {
  3.  list<productos>listaProductos=new lis<productos>();
  4.  
  5.   public void agregar(productos producto)
  6.  {
  7.  listaproductos.add(producto);
  8.  }
  9.  public list<productos>consultagral()
  10.  {
  11.  return listaproductos;
  12.  }
  13. }

tengo un windows form donde guardo los datos el codigo del formulario es...

Código
  1. Productos producto;
  2. OperacionesProductos operacion;
  3. List<Productos>listaAuxiliar;
  4.  
  5. public AgregarProductos()
  6. {
  7. operacion = new OperacionesProductos();
  8. InitializeComponent();
  9. }
  10.  
  11. private void button1_Click(object sender, EventArgs e)
  12. {
  13.  
  14. OpenFileDialog fileDialog = new OpenFileDialog();
  15. fileDialog.Filter = "Archivo JPG|*.jpg";
  16.  
  17. if (fileDialog.ShowDialog() == DialogResult.OK)
  18. {
  19.  imagenProducto.Image = Image.FromFile(fileDialog.FileName);
  20. }
  21.  
  22. }
  23.  
  24. private void buttonAgregar_Click(object sender, EventArgs e)
  25. {
  26. producto = new Productos();
  27. producto.Clave = textBoxClave.Text;
  28. producto.Nombre = textBoxNombre.Text;
  29. producto.Cantidad =int.Parse( textBoxCantidad.Text);
  30. producto.Precio =Single.Parse( textBoxPrecio.Text);
  31. producto.Marca = textBoxMarca.Text;
  32. producto.FechaCaducidad = dateTimePicker1.Value.ToShortDateString().ToString ();
  33. producto.Comentario = textBoxComentario.Text;
  34. producto.Imagen = ImageHelper.ImageToByteArray(imagenProducto.Image) ;
  35. operacion.AgregarProductos(producto);
  36.  
  37. MessageBox.Show(":::Producto agregado exitosamente:::");
  38. textBoxClave.Text = textBoxNombre.Text = textBoxCantidad.Text = textBoxMarca.Text = textBoxPrecio.Text= textBoxComentario.Text= "";
  39. textBoxClave.Focus();
  40. }

aqui es la consulta general pero dentro de windows form donde realizo la operacion de agregar productos y los realiaza y visualiza en datgridview

Código
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. dataGridView1.Visible = true;
  4.  
  5. List<Productos> lista;
  6. lista = operacion.ConsultaGral();
  7. int fila = 0;
  8. foreach (var item in lista)
  9. {
  10. dataGridView1.Rows.Add();
  11. dataGridView1.Rows[fila].Cells[0].Value = item.Clave;
  12. dataGridView1.Rows[fila].Cells[1].Value = item.Nombre;
  13. dataGridView1.Rows[fila].Cells[2].Value = item.Cantidad;
  14. dataGridView1.Rows[fila].Cells[3].Value = item.Precio;
  15. dataGridView1.Rows[fila].Cells[4].Value = item.Marca;
  16. dataGridView1.Rows[fila].Cells[5].Value =item.FechaCaducidad;
  17. dataGridView1.Rows[fila].Cells[6].Value = item.Comentario;
  18. dataGridView1.Rows[fila].Cells[7].Value = item.imagen;//deberia visualizar la imagen que agrego...
  19.  
  20. fila++;
  21. }
  22. }

el problema que tengo es de que al usar list<productos>listaAuxiliar;
dentro de otro windows form este no realiza nada.

el codigo es el siguiente..
Código
  1. namespace proyectoProductos
  2. {
  3. public partial class consultaGeneral : Form
  4. {
  5. OperacionesProductos operacion;
  6. public consultaGeneral()
  7. {
  8. operacion = new OperacionesProductos();
  9. InitializeComponent();
  10. }
  11.  
  12. private void button1_Click(object sender, EventArgs e)
  13. {
  14. dataGridView1.Visible = true;
  15.  
  16. List<Productos> lista;
  17. lista = operacion.ConsultaGral();
  18. int fila = 0;
  19. foreach (var item in lista)
  20. {
  21. dataGridView1.Rows.Add();
  22. dataGridView1.Rows[fila].Cells[0].Value = item.Clave;
  23. dataGridView1.Rows[fila].Cells[1].Value = item.Nombre;
  24. dataGridView1.Rows[fila].Cells[2].Value = item.Cantidad;
  25. dataGridView1.Rows[fila].Cells[3].Value = item.Precio;
  26. dataGridView1.Rows[fila].Cells[4].Value = item.Marca;
  27. dataGridView1.Rows[fila].Cells[5].Value =item.FechaCaducidad;
  28. dataGridView1.Rows[fila].Cells[6].Value = item.Comentario;
  29. dataGridView1.Rows[fila].Cells[7].Value = item.imagen;//deberia visualizar la imagen que agrego...
  30.  
  31. fila++;
  32. }
  33. //este no visualiza nada
  34. }

para mas detalles el programa consiste en un menu en donde se agregen productos,consulta general,consulta individual,modificar eliminar datos de la lista
y visualizarlos en un datagridview..

quiero saber cual es mi error

de antemano muchas gracias....


Título: Re: ayula con list<> en csharp
Publicado por: neoncyber en 27 Abril 2011, 00:18 am
No entiendo por que volver a recorrer la lista, simplemente usa la propiedad DataSource del DataGridView:
Código
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. dataGridView1.Visible = true;
  4.  
  5. List<Productos> lista;
  6. lista = operacion.ConsultaGral();
  7.  
  8. dataGridView1.DataSource = lista
  9.  
  10. }
  11.  


Título: Re: ayula con list<> en csharp
Publicado por: [D4N93R] en 27 Abril 2011, 21:59 pm
Otra cosa,

Las propiedades, si no vas a revisar nada en el get o en el set entonces es suficiente:

Código
  1. public string NombrePropiedad { get; set; }

Si la quieres de solo lectura:

Código
  1. public string NombrePropiedad { get; private set; }

De esa forma nada más puedes asignarle valores dentro de la clase y es readonly fuera de ella.

Un saludo!