ayula con list<> en csharp

Iniciado por sirfranko, 26 Abril 2011, 22:44 PM

0 Miembros y 1 Visitante están viendo este tema.

sirfranko

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 (csharp) [Seleccionar]
class productos
{
  string clave;

public string Clave
{
get { return clave; }
set { clave = value; }
}
string nombre;

public string Nombre
{
get { return nombre; }
set { nombre = value; }
}
int cantidad;

public int Cantidad
{
get { return cantidad; }
set { cantidad = value; }
}
float precio;

public float Precio
{
get { return precio; }
set { precio = value; }
}
string marca;

public string Marca
{
get { return marca; }
set { marca = value; }
}
string fechaCaducidad;

public string FechaCaducidad
{
get { return fechaCaducidad; }
set { fechaCaducidad = value; }
}

string comentario;

public string Comentario
{
get { return comentario; }
set { comentario = value; }
}
public byte[] Imagen
{ get; set; }//es para almacenar imagen en la lista
}
}


una clase de operaciones productos...
Código (csharp) [Seleccionar]
class operacionesProductos
{
 list<productos>listaProductos=new lis<productos>();
 
  public void agregar(productos producto)
 {
 listaproductos.add(producto);
 }
 public list<productos>consultagral()
 {
 return listaproductos;
 }
}


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

Código (csharp) [Seleccionar]
Productos producto;
OperacionesProductos operacion;
List<Productos>listaAuxiliar;

public AgregarProductos()
{
operacion = new OperacionesProductos();
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Filter = "Archivo JPG|*.jpg";

if (fileDialog.ShowDialog() == DialogResult.OK)
{
 imagenProducto.Image = Image.FromFile(fileDialog.FileName);
}

}

private void buttonAgregar_Click(object sender, EventArgs e)
{
producto = new Productos();
producto.Clave = textBoxClave.Text;
producto.Nombre = textBoxNombre.Text;
producto.Cantidad =int.Parse( textBoxCantidad.Text);
producto.Precio =Single.Parse( textBoxPrecio.Text);
producto.Marca = textBoxMarca.Text;
producto.FechaCaducidad = dateTimePicker1.Value.ToShortDateString().ToString ();
producto.Comentario = textBoxComentario.Text;
producto.Imagen = ImageHelper.ImageToByteArray(imagenProducto.Image) ;
operacion.AgregarProductos(producto);

MessageBox.Show(":::Producto agregado exitosamente:::");
textBoxClave.Text = textBoxNombre.Text = textBoxCantidad.Text = textBoxMarca.Text = textBoxPrecio.Text= textBoxComentario.Text= "";
textBoxClave.Focus();
}


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 (csharp) [Seleccionar]
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Visible = true;

List<Productos> lista;
lista = operacion.ConsultaGral();
int fila = 0;
foreach (var item in lista)
{
dataGridView1.Rows.Add();
dataGridView1.Rows[fila].Cells[0].Value = item.Clave;
dataGridView1.Rows[fila].Cells[1].Value = item.Nombre;
dataGridView1.Rows[fila].Cells[2].Value = item.Cantidad;
dataGridView1.Rows[fila].Cells[3].Value = item.Precio;
dataGridView1.Rows[fila].Cells[4].Value = item.Marca;
dataGridView1.Rows[fila].Cells[5].Value =item.FechaCaducidad;
dataGridView1.Rows[fila].Cells[6].Value = item.Comentario;
dataGridView1.Rows[fila].Cells[7].Value = item.imagen;//deberia visualizar la imagen que agrego...

fila++;
}
}


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 (csharp) [Seleccionar]
namespace proyectoProductos
{
public partial class consultaGeneral : Form
{
OperacionesProductos operacion;
public consultaGeneral()
{
operacion = new OperacionesProductos();
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Visible = true;

List<Productos> lista;
lista = operacion.ConsultaGral();
int fila = 0;
foreach (var item in lista)
{
dataGridView1.Rows.Add();
dataGridView1.Rows[fila].Cells[0].Value = item.Clave;
dataGridView1.Rows[fila].Cells[1].Value = item.Nombre;
dataGridView1.Rows[fila].Cells[2].Value = item.Cantidad;
dataGridView1.Rows[fila].Cells[3].Value = item.Precio;
dataGridView1.Rows[fila].Cells[4].Value = item.Marca;
dataGridView1.Rows[fila].Cells[5].Value =item.FechaCaducidad;
dataGridView1.Rows[fila].Cells[6].Value = item.Comentario;
dataGridView1.Rows[fila].Cells[7].Value = item.imagen;//deberia visualizar la imagen que agrego...

fila++;
}
//este no visualiza nada
}


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....

neoncyber

No entiendo por que volver a recorrer la lista, simplemente usa la propiedad DataSource del DataGridView:
Código (csharp) [Seleccionar]

private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Visible = true;

List<Productos> lista;
lista = operacion.ConsultaGral();

dataGridView1.DataSource = lista

}
Código (python) [Seleccionar]

#!/usr/bin/python
print "Visit:"
print "http:\\donkeysharp.blogspot.com"

[D4N93R]

Otra cosa,

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

Código (csharp) [Seleccionar]
public string NombrePropiedad { get; set; }

Si la quieres de solo lectura:

Código (csharp) [Seleccionar]
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!