none
Mostrar datos en un GridView a partir de una consulta a Base de Datos RRS feed

  • Pregunta

  • Hola nuevamente.

    Tratando de implementar un GridView en mi proyecto MVC 4 y Razor me encuentro con un detalle, por lo cual recurro nuevamente a su apoyo.

    Quiero mostrar un GridView en mi vista Razor, el cual se deberá llenar a partir de la ejecución de un Procedimiento Almacenado (utilizando SQL Server 2008), he indagado en varias páginas para saber como realizarlo, ejemplo de ella encontré esto http://www.c-sharpcorner.com/Blogs/12071/gridview-in-mvc-2-in-Asp-Net.aspx, me pareció interesante ya que se asemeja a lo que yo requiero (aunque como me informaron la conexión a la Base de Datos no se debe de realizar en el Modelo, por el momento eso no es problema); la cuestión es que trate de implementarlo en mi proyecto pero dónde presento inconveniente es al momento de realizar la codificación en la vista, ya que lo que en la página muestran es aspx y desconozco si la manera en que lo están implementando es correcto.

    Realice el código que allí mencionan, exceptuando lo de la vista (si es necesario puedo proporcionar el código, pero como informo es tal cual como mencionan en la página) .

    ¿La manera en que lo implementan es viable?, de ser así, ¿cómo lo puedo implementar en una vista Razor?

    Les agradezco por el tiempo tomado, si hay alguna sugerencia se los agradeceré mucho.

    viernes, 14 de febrero de 2014 17:36

Respuestas

  • hola

    si la ides es mostrar un grid podrias usar el WebGrid

    WebGrid en MVC 3, paso a paso

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta cca10 viernes, 14 de febrero de 2014 22:22
    viernes, 14 de febrero de 2014 18:53
  • Gracias Leandro por tu pronta respuesta.

    Te informo que ya pude realizarlo de la siguiente manera:

    Modelo:

    public class LogOnModel
        {
            public int id_ { get; set; }
            public string pais { get; set; }
            public Boolean Activo { get; set; }
    
        }
    }

    Controlador:

     public ActionResult Vis()
            {
                DataTable dtGrid = new DataTable();
                LogOnModel objGrid = new LogOnModel();
                dtGrid = objGrid.GetgridData();
                List<LogOnModel> Gridd = new List<LogOnModel>();
                foreach (DataRow dr in dtGrid.Rows)
                {
                    LogOnModel users = new LogOnModel();
                    users.id_ = Convert.ToInt32(dr["id_"].ToString());
                    users.pais = dr["pais"].ToString();
                    users.Activo = Convert.ToBoolean(dr["Activo"].ToString());
                    Gridd.Add(users);
                }
                return View("REQ", Gridd);
            }

    Consulta SQL:

    string conex = ConfigurationManager.ConnectionStrings["Conexion"].ConnectionString;
            DataSet ds;
            public DataTable GetgridData()
            {
                try
                {
                    ds = new DataSet();
                    SqlConnection con = new SqlConnection(conex);
                    SqlDataAdapter ada = new SqlDataAdapter("select * from tabla", conex);
                    ada.Fill(ds);
                    return ds.Tables[0];
                }
                catch (Exception err)
                {
                    throw err;
                }
            }

    Vista:

    @model List<ConsolaAdministracionRazor.Models.LogOnModel>
    @{
        ViewBag.Title = "Vis";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
    
    <h2>REQ</h2>
    @{
        var grid = new WebGrid(source: Model, defaultSort: "id_", rowsPerPage: 3);
    }
    <h2>Lista de Paises</h2>
    <div id="grid">
    @grid.GetHtml(
    tableStyle:"grid",
    headerStyle:"head",
    alternatingRowStyle:"alt",
    columns:grid.Columns(
    grid.Column("id_"),
    grid.Column("pais"),
    grid.Column("Activo")
    )
    )
    </div>

    Esa es la manera de como encontré realizarlo, desconozco si sea la manera correcta, pero de esa forma puedo llenar el GridView realizando una consulta a la Base de Datos.

    De igual forma revisaré la página que comentas.

    Por el momento la duda que se tenía al respecto ya quedó resuelta, seguiré trabajando para realizar algunas modificaciones.

    Muchas gracias.

    • Marcado como respuesta cca10 viernes, 14 de febrero de 2014 22:22
    viernes, 14 de febrero de 2014 19:51

Todas las respuestas

  • hola

    si la ides es mostrar un grid podrias usar el WebGrid

    WebGrid en MVC 3, paso a paso

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta cca10 viernes, 14 de febrero de 2014 22:22
    viernes, 14 de febrero de 2014 18:53
  • Gracias Leandro por tu pronta respuesta.

    Te informo que ya pude realizarlo de la siguiente manera:

    Modelo:

    public class LogOnModel
        {
            public int id_ { get; set; }
            public string pais { get; set; }
            public Boolean Activo { get; set; }
    
        }
    }

    Controlador:

     public ActionResult Vis()
            {
                DataTable dtGrid = new DataTable();
                LogOnModel objGrid = new LogOnModel();
                dtGrid = objGrid.GetgridData();
                List<LogOnModel> Gridd = new List<LogOnModel>();
                foreach (DataRow dr in dtGrid.Rows)
                {
                    LogOnModel users = new LogOnModel();
                    users.id_ = Convert.ToInt32(dr["id_"].ToString());
                    users.pais = dr["pais"].ToString();
                    users.Activo = Convert.ToBoolean(dr["Activo"].ToString());
                    Gridd.Add(users);
                }
                return View("REQ", Gridd);
            }

    Consulta SQL:

    string conex = ConfigurationManager.ConnectionStrings["Conexion"].ConnectionString;
            DataSet ds;
            public DataTable GetgridData()
            {
                try
                {
                    ds = new DataSet();
                    SqlConnection con = new SqlConnection(conex);
                    SqlDataAdapter ada = new SqlDataAdapter("select * from tabla", conex);
                    ada.Fill(ds);
                    return ds.Tables[0];
                }
                catch (Exception err)
                {
                    throw err;
                }
            }

    Vista:

    @model List<ConsolaAdministracionRazor.Models.LogOnModel>
    @{
        ViewBag.Title = "Vis";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
    
    <h2>REQ</h2>
    @{
        var grid = new WebGrid(source: Model, defaultSort: "id_", rowsPerPage: 3);
    }
    <h2>Lista de Paises</h2>
    <div id="grid">
    @grid.GetHtml(
    tableStyle:"grid",
    headerStyle:"head",
    alternatingRowStyle:"alt",
    columns:grid.Columns(
    grid.Column("id_"),
    grid.Column("pais"),
    grid.Column("Activo")
    )
    )
    </div>

    Esa es la manera de como encontré realizarlo, desconozco si sea la manera correcta, pero de esa forma puedo llenar el GridView realizando una consulta a la Base de Datos.

    De igual forma revisaré la página que comentas.

    Por el momento la duda que se tenía al respecto ya quedó resuelta, seguiré trabajando para realizar algunas modificaciones.

    Muchas gracias.

    • Marcado como respuesta cca10 viernes, 14 de febrero de 2014 22:22
    viernes, 14 de febrero de 2014 19:51