none
Llenar GridView desde otra Capa asp.net c# RRS feed

  • Pregunta

  • Hola como les va??, disculpen que los moleste, debo llenar un Gridview con metodo desde Capa Negocio; pero con lo que tengo, cuando llamo al webform, en Capa Presentacion, no me reconoce metodo "fillListView".......

    Dejo codigo de los dos Capas, para que vean y si pueden darme una mano, me ayuden a solucionalo, abrazos...

    En Capa Negocio

    public DataTable fillListView(int Curso, int Materia)
            {
                try
                {
                    using (OleDbConnection con = new OleDbConnection())
                    {
                        con.Open();
    
                        string SQL = @"SELECT alum.Id_Alumno, alum.Nombre, alum.Apellido, alum.Dni, 
                                            mpal.Id, turm.Id_Turno
                                            FROM (TurnoMateria turm INNER JOIN MateriaPorAlumno mpal ON mpal.Id_Turno = turm.Id_Turno)                                         
                                            INNER JOIN Alumno alum ON alum.Id_Alumno = mpal.Id_Alumno                                                                              
                                            WHERE turm.Id_Curso = @idCurso AND turm.Id_Materia = @idMateria";
    
                        OleDbDataAdapter da = new OleDbDataAdapter(SQL, con);
                        da.SelectCommand.Parameters.AddWithValue("@idCurso", Curso);
                        da.SelectCommand.Parameters.AddWithValue("@idMateria", Materia);
                        DataTable tabla = new DataTable();
                        da.Fill(tabla);
    
                        return tabla;
                    }
                }

    En Capa Presentacion(se aprecia de dode obtengo idCurso, de Grilla Curso, e idMateria, de la Grilla Materia

    protected void GridCurso_SelectedIndexChanged(object sender, EventArgs e)
            {
                // Se obtiene la fila seleccionada del gridview
    
                GridViewRow row = GridCurso.SelectedRow;
    
                // Obtengo el id de la entidad que se esta editando
                // en este caso de la entidad Curso
                idCurso = Convert.ToInt32(GridCurso.DataKeys[row.RowIndex].Value);
    
                CargarData();
            }
            private void CargarData()
            {
                AccesoLogicaMateria materiaDao = new AccesoLogicaMateria();
                GridMateria.DataSource = materiaDao.getByCurso(idCurso);
                GridMateria.DataKeyNames = new string[] { "Id_Materia" };
                GridMateria.DataBind();
            }
    
            protected void GridMateria_SelectedIndexChanged(object sender, EventArgs e)
            {
                // Se obtiene la fila seleccionada del gridview
    
                GridViewRow row = GridMateria.SelectedRow;
    
                // Obtengo el id de la entidad que se esta editando
                // en este caso de la entidad Materia
                idMateria = Convert.ToInt32(GridMateria.DataKeys[row.RowIndex].Value);
    
                CargoDato();
            }
    
            protected void CargoDato()
            {
                AccesoLogicaMateriaPorAlumno mpae = new AccesoLogicaMateriaPorAlumno();
                
                    GridNuevaAsist.DataSource = mpae.fillListView(idCurso, idMateria);
                    GridNuevaAsist.DataKeyNames = new string[] { "Id_Alumno" };
                    GridNuevaAsist.DataBind();
                
    
    
                StringBuilder sb = new StringBuilder();
    
                foreach (GridViewRow row in GridCurso.Rows)
                {
                    sb.Append(string.Format("{0}", string.Concat(GridCurso.SelectedRow.Cells[1].Text, GridCurso.SelectedRow.Cells[2].Text)));
                    break;
                }



    • Editado GuilloFerrero lunes, 3 de octubre de 2016 22:59 mejoras
    lunes, 3 de octubre de 2016 21:39

Respuestas

  • Hola @GuilloFerrero

    En la capa de Negocio no se persiste contra la Base de Datos, la capa de negocio es donde se hace llamado a métodos de la capa de Acceso a Datos y se programa lógica del negocio.

    Cada capa tienen sus responsabilidades no es bueno contaminarlas con responsabilidades de otra capa, por otro lado cual es el error que te da cuando haces el debug del método fillListView(int Curso, int Materia)


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú





    • Editado Pedro Ávila lunes, 3 de octubre de 2016 22:00 ...
    • Marcado como respuesta GuilloFerrero lunes, 3 de octubre de 2016 23:02
    lunes, 3 de octubre de 2016 21:55

Todas las respuestas

  • Hola @GuilloFerrero

    En la capa de Negocio no se persiste contra la Base de Datos, la capa de negocio es donde se hace llamado a métodos de la capa de Acceso a Datos y se programa lógica del negocio.

    Cada capa tienen sus responsabilidades no es bueno contaminarlas con responsabilidades de otra capa, por otro lado cual es el error que te da cuando haces el debug del método fillListView(int Curso, int Materia)


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú





    • Editado Pedro Ávila lunes, 3 de octubre de 2016 22:00 ...
    • Marcado como respuesta GuilloFerrero lunes, 3 de octubre de 2016 23:02
    lunes, 3 de octubre de 2016 21:55
  • HOla, Pedro, no me reconoce el Metodo para llenar el GridView....Como dice la consulta que hice:

    debo llenar un Gridview con metodo desde Capa Negocio; pero con lo que tengo, cuando llamo al webform, en Capa Presentacion, me da Errory dice que no me reconoce el metodo, que es nombrado "fillListView".......

    Espero que se entienda, ahora.....Si puedes ayudarme, gracias...

    lunes, 3 de octubre de 2016 23:02
  • Hola

    Modifica tu método

    public DataTable fillListView(int Curso, int Materia)
            {
                try
                {
                    using (OleDbConnection con = new OleDbConnection())
                    {
                        con.Open();
    
                        string SQL = @"SELECT alum.Id_Alumno, alum.Nombre, alum.Apellido, alum.Dni, 
                                            mpal.Id, turm.Id_Turno
                                            FROM (TurnoMateria turm INNER JOIN MateriaPorAlumno mpal ON mpal.Id_Turno = turm.Id_Turno)                                         
                                            INNER JOIN Alumno alum ON alum.Id_Alumno = mpal.Id_Alumno                                                                              
                                            WHERE turm.Id_Curso = @idCurso AND turm.Id_Materia = @idMateria";
    
                        OleDbCommand cmd = new OleDbCommand(SQL, con);
                        cmd.Parameters.AddWithValue("@idCurso", Curso);
                        cmd.Parameters.AddWithValue("@idMateria", Materia);
    		    OleDbDataAdapter da  = new OleDbDataAdapter(cmd);
    		    DataTable tabla = new DataTable();
                        da.Fill(tabla);
                        return tabla;
                    }
                }
    Una consulta que quieres decir cuando dices ¿no me reconoce método? me puedes explicar esa parte por favor.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    • Editado Pedro Ávila martes, 4 de octubre de 2016 0:36 ...
    martes, 4 de octubre de 2016 0:13
  • Hola, Pedro, me sale esta leyenda:.....(si puedes continuar este hilo, y ayudarme a resolver esto), gracias, saludos...

     

    martes, 4 de octubre de 2016 2:23
  • Hola

    Cuando llamas a tu método desde la UI esos parametros IdCurso, IdMateria que información contienen?


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    • Editado Pedro Ávila martes, 4 de octubre de 2016 2:45 ...
    martes, 4 de octubre de 2016 2:44
  • Hola, Pedro, estos Ids, contienen los Ids de sendas Grillas Curso y grilla Materia, que filtran lo que carga el GridNuevaAsist (el que no carga con el "fillListView"), Contienen los DataKeyNames de sendas grillas que filtran para la del "fillListView", que no reconoce la compilacion.......

    Te pido si podes segui este hilo, gracias, Pedro.......

    Te dejo el codigo donde puede apreciarse lo que te aclaro de los Ids.....

    protected void GridCurso_SelectedIndexChanged(object sender, EventArgs e)
            {
                // Se obtiene la fila seleccionada del gridview
    
                GridViewRow row = GridCurso.SelectedRow;
    
                // Obtengo el id de la entidad que se esta editando
                // en este caso de la entidad Curso
                idCurso = Convert.ToInt32(GridCurso.DataKeys[row.RowIndex].Value);
    
                CargarData();
            }
            private void CargarData()
            {
                AccesoLogicaMateria materiaDao = new AccesoLogicaMateria();
                GridMateria.DataSource = materiaDao.getByCurso(idCurso);
                GridMateria.DataKeyNames = new string[] { "Id_Materia" };
                GridMateria.DataBind();
            }
    
            protected void GridMateria_SelectedIndexChanged(object sender, EventArgs e)
            {
                // Se obtiene la fila seleccionada del gridview
    
                GridViewRow row = GridMateria.SelectedRow;
    
                // Obtengo el id de la entidad que se esta editando
                // en este caso de la entidad Materia
                idMateria = Convert.ToInt32(GridMateria.DataKeys[row.RowIndex].Value);
    
                CargoDato();
            }
    
            protected void CargoDato()
            {
                AccesoLogicaMateriaPorAlumno mpae = new AccesoLogicaMateriaPorAlumno();
                
                    GridNuevaAsist.DataSource = mpae.fillListView(idCurso, idMateria);
                    GridNuevaAsist.DataKeyNames = new string[] { "Id_Alumno" };
                    GridNuevaAsist.DataBind();
                



    martes, 4 de octubre de 2016 13:36