ayuda con datareader

Iniciado por d91, 11 Noviembre 2015, 03:56 AM

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

d91

hola a todos, estoy teniendo un problema a al momento de manipular un datareader para llenar un grid que le he dado formato con anterioridad  la función donde lo lleno trabaja bien porque depurando puedo ver los datos que trae pero al intentar leer para llenar la lista me da el error:   Operación no válida dado el estado actual del objeto.
aquí lleno
Código (csharp) [Seleccionar]

public OracleDataReader busquedaDinamica(string spName, string patron)
        {
            conexion a = new conexion();

            try
            {
                using (OracleConnection conectar = a.ayudar())
                {
                   
                   
                    OracleCommand cmd = new OracleCommand(spName, conectar);
                   
                    OracleParameter param1 = new OracleParameter("ResCursor", OracleDbType.RefCursor);
                    param1.Direction = ParameterDirection.Output;
                    cmd.Parameters.Add(param1);

                    OracleParameter param2 = new OracleParameter("patron", OracleDbType.Varchar2);
                    param2.Value = patron;
                    cmd.Parameters.Add(param2);

                    cmd.CommandType = CommandType.StoredProcedure;

                    conectar.Open();
                    OracleDataReader dr = cmd.ExecuteReader();
                    return dr;
                }//using 1

            }//try
            catch (Exception ex)
            {
                throw new ArgumentException("Error " + ex);
            }//catch


y en este recibo e intento recorrer para llenar la lista

Código (csharp) [Seleccionar]


public List<clsventaServicio> ventaServicio(string spName)
        {

            List<clsventaServicio> objeto = new List<clsventaServicio>();

            con = new conexion();
            OracleDataReader lector;
            lector = con.llenarGrid(spName);

            while (lector.Read())//aqui al intentar leer me da error
            {       //error:   Operacion no vlida dado el estado actual del objeto.

                clsventaServicio lista = new clsventaServicio();
                lista.clave = lector[0].ToString();
                lista.servicio = lector[1].ToString();
                lista.precio  = lector[2].ToString();

                objeto.Add(lista);

            }//while
            return objeto;

        }//public lista<ventaproducto>