none
Llenar DataGridView - Problema RRS feed

  • Pregunta

  • En realidad tengo un par de dudas y 1 problema.

    Planteo el problema:

    Clase:

    public List<clsProductos> Listar()     {           

    OleDbConnection con = MiBase.Coneccion();       

    OleDbCommand Consulta = con.CreateCommand();           

    Consulta.CommandType = CommandType.StoredProcedure;           

    Consulta.CommandText = "SeleccionProducto";           

    OleDbDataReader Lector = Consulta.ExecuteReader();            

        while (Lector.Read())            {               

    clsProductos Producto = new clsProductos();           

        Producto.IdProducto = Convert.ToInt32(Lector["IdProducto"]);           

        Producto.Nombre = Lector["Nombre"].ToString();             

      Producto.Precio = Convert.ToInt32(Lector["Precio"]);               

    Producto.Stock = Convert.ToInt32(Lector["Stock"]);             

      Producto.Foto = Lector["Foto"].ToString();             

      Milista.Add(Producto);         

      }                     

      return Milista;     

      }

    Y en el formulario en la linea esta me tira error:

     private void cmbCriterio_SelectedIndexChanged_1(object sender, EventArgs e)     

      {        dgvProductos.DataSource = Producto.Listar();

    }

    Error: "Pocos parametros, se esperaba 1".

    No entiendo por que me tira este error, por que me pide que le pase parametro si yo jamas indique que el metodo Listar necesite parametros...

    Supongo que habra algun problema en la clase, he leido de datatable y dataset, en traer los datos pero no se bien que son, yo los traigo en un list...

    Saludos, gracias 


    • Editado Ezalor martes, 13 de noviembre de 2012 21:56
    • Cambiado webJoseModerator martes, 13 de noviembre de 2012 22:19 (De:Lenguaje C#)
    martes, 13 de noviembre de 2012 21:51

Todas las respuestas

  • Y el procedure "SeleccionProducto"

    no espera recibir parametros,porque ahi no le estas pasando ninguno.


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.
    Saludos.
    Lima-Perú

    martes, 13 de noviembre de 2012 21:53
  • la variable de Milista dodne la defienes ? porque deberia estar alli mismo la isntancia

    public List<clsProductos> Listar() { OleDbConnection con = MiBase.Coneccion(); OleDbCommand Consulta = new OleDbCommand("SeleccionProducto", con) Consulta.CommandType = CommandType.StoredProcedure; Consulta.Parameters.AddWithValue("@param", valor);

    OleDbDataReader Lector = Consulta.ExecuteReader(); List<clsProductos> Milista = new List<clsProductos>(); while (Lector.Read()) { clsProductos Producto = new clsProductos(); Producto.IdProducto = Convert.ToInt32(Lector["IdProducto"]); Producto.Nombre = Lector["Nombre"].ToString(); Producto.Precio = Convert.ToInt32(Lector["Precio"]); Producto.Stock = Convert.ToInt32(Lector["Stock"]); Producto.Foto = Lector["Foto"].ToString(); Milista.Add(Producto); } return Milista; }

    ademas el error esta mas que claro te faltan definir parametros, lo marco en negrita, cambia el nombre que define el SP y el valor que le asignas

    y si tiene mas de uno tambien asignalo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 13 de noviembre de 2012 22:01

  • La lista la declaraba arriba como publica. Copie tu codigo y se me soluciono el error, pero no me carga el datagridview, sabes por que?

    obviamente cambio el @Param y el Valor...

    gracias


    • Editado Ezalor martes, 13 de noviembre de 2012 22:25
    martes, 13 de noviembre de 2012 22:17
  • Es que tu no estas llenando tu datagridview tienes que llenarlo , se utilza mayormente una tabla y con la propiedad datasource del grid le pasas tu tabla llena

    Si mi respuesta te ha ayudado a resolver tus problemas, Selecciona "Proponer como respuesta"

    Blog
    J.Joaquin

    martes, 13 de noviembre de 2012 22:25
  • Si la estoy llenando aca...

     private void cmbCriterio_SelectedIndexChanged_1(object sender, EventArgs e)     

      {        dgvProductos.DataSource = Producto.Listar();

    }

    martes, 13 de noviembre de 2012 22:30
  • Es que tiene que ser en el evento load donde lo llenes porque ahí es donde cuando te habre tu formulario que lo quieres cargar o no?


    Si mi respuesta te ha ayudado a resolver tus problemas, Selecciona "Proponer como respuesta"

    Blog
    J.Joaquin

    martes, 13 de noviembre de 2012 22:34
  • Nop, lo que hice ahi es que cuando yo selecciono X item de 1 combobox me cargue en el datagridview una lista (relacionada con item del combo)
    martes, 13 de noviembre de 2012 22:51
  • Hola, probaste colocando un breakpoint en el evento cmbCriterio_SelectedIndexChanged_1 para ver si esta entrando al método.

    Sino seleccionando el cmbCriterio en el menú propiedades hay un icono con forma de rayo ahi se visualizan los eventos, deberías ver que el evento SelectedIndexChanged

    se corresponda con el evento que tu llamas.

    Saludos


    "Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta". Si la respuesta te ha sido util Votala."

    miércoles, 14 de noviembre de 2012 11:49
  • pero validas que para el valor que asignas al procedure devuelva registros ?

    si pones un breakpoint en el codigo puede notar que ingresa en el while de reader?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 14 de noviembre de 2012 13:34
  • http://code.msdn.microsoft.com/Clase-para-gestionar-la-779f77c6
    jueves, 15 de noviembre de 2012 20:54