none
Ejemplo de Vista con mas de una tabla para cargar en diferentes controles DropDownlist RRS feed

  • Pregunta

  • Estimados,

                 Si tengo un proyecto ASP.NET con MVC 5, utilizando Entity Framework asociado a una BD existente en SQL Server, la cual tiene tablas maestras, se puede cargar en una vista (View) mas de un control DropdownList de diferentes tablas maestras?.

                 La pregunta es porque necesito construir una página que tenga más de un filtro de búsqueda, en los cuales se deben cargar datos de diferentes tablas que al final me servirán para poder agregar esa información seleccionada a un detalle de venta que se encontrara en la misma página, algo así como un "Header - Detail", pero con mas de una tabla.

                 He tratado de construirla, pero me arroja error al momento de agregar otro model para enlazar mas tablas desde el modelo.

                Estoy tratando de hacer esto...

                    @model XX.Web.EF.Mayorista

                    @model XX.Web.EF.Terminal

                 ....

                Al hacer eso me reclama que solo se permite una instrucción model en un archivo. He buscado en la web, pero solo aparecen ejemplos con una tabla, lo que no es mi caso, si alguien tiene una idea sería genial.

               Gracias de Antemano.

    Saludos Cordiales,

    Oscar.

      

       

    martes, 21 de junio de 2016 0:49

Respuestas

  • OACS,

    Puede enviar los datos para cada objeto de tipo DropDownList desde el método de acción en forma de un objeto ViewBag

    ViewBag.ListaMayoristas = new SelectList(context.TablaMayoristas, "ID", "Desc", 0);
    ViewBag.ListaTerminal = new SelectList(context.TablaTerminales, "ID", "Desc", 0);

    En la vista puede implementar los desplegables de la siguiente manera:

    @Html.DropDownList("Mayoristas", ViewBag.ListaMayoristas as IEnumerable<SelectedListItem>)
    @Html.DropDownList("Terminal", ViewBag.ListaTerminal as IEnumerable<SelectedListItem>)


    • Marcado como respuesta OACS martes, 21 de junio de 2016 13:42
    martes, 21 de junio de 2016 1:12
  • Hola OACS,

    Si solo necesitas cargar varios DropDownList con datos de diferentes tablas, puedes cargarlos mediante el ViewBag en el controlador, así evitas estar agregando un nuevo modelo a la vista.

    Ejemplo :

           private EjemploEntities db;
    
            public ActionResult Index()
            {
                using ( db = new EjemploEntities())
                {
                    ViewBag.categorias = new SelectList(db.TB_CATEGORIA, "codCategoria", "nomCategoria");
                    ViewBag.paises = new SelectList(db.TB_PAIS, "codPais", "nomPais");
                }
                  
                return View();
            }

    Cargar en el ViewBag una lista SelectList(datos, valor, texto que muestra).

    Y en la vista solo los llamas.

    @Html.DropDownListFor(x => x.categoriaProducto, (SelectList)ViewBag.categorias, "Seleccione una categoria")
    @Html.DropDownListFor(x => x.paisProducto, (SelectList)ViewBag.paises, "Seleccione un pais")

    Espero te ayude.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta OACS martes, 21 de junio de 2016 13:48
    martes, 21 de junio de 2016 1:14

Todas las respuestas

  • OACS,

    Puede enviar los datos para cada objeto de tipo DropDownList desde el método de acción en forma de un objeto ViewBag

    ViewBag.ListaMayoristas = new SelectList(context.TablaMayoristas, "ID", "Desc", 0);
    ViewBag.ListaTerminal = new SelectList(context.TablaTerminales, "ID", "Desc", 0);

    En la vista puede implementar los desplegables de la siguiente manera:

    @Html.DropDownList("Mayoristas", ViewBag.ListaMayoristas as IEnumerable<SelectedListItem>)
    @Html.DropDownList("Terminal", ViewBag.ListaTerminal as IEnumerable<SelectedListItem>)


    • Marcado como respuesta OACS martes, 21 de junio de 2016 13:42
    martes, 21 de junio de 2016 1:12
  • Hola OACS,

    Si solo necesitas cargar varios DropDownList con datos de diferentes tablas, puedes cargarlos mediante el ViewBag en el controlador, así evitas estar agregando un nuevo modelo a la vista.

    Ejemplo :

           private EjemploEntities db;
    
            public ActionResult Index()
            {
                using ( db = new EjemploEntities())
                {
                    ViewBag.categorias = new SelectList(db.TB_CATEGORIA, "codCategoria", "nomCategoria");
                    ViewBag.paises = new SelectList(db.TB_PAIS, "codPais", "nomPais");
                }
                  
                return View();
            }

    Cargar en el ViewBag una lista SelectList(datos, valor, texto que muestra).

    Y en la vista solo los llamas.

    @Html.DropDownListFor(x => x.categoriaProducto, (SelectList)ViewBag.categorias, "Seleccione una categoria")
    @Html.DropDownListFor(x => x.paisProducto, (SelectList)ViewBag.paises, "Seleccione un pais")

    Espero te ayude.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta OACS martes, 21 de junio de 2016 13:48
    martes, 21 de junio de 2016 1:14
  • Gracias Willams!,

            Me sirvió tu respuesta.  Ahora por casualidad tendrás algún link de ejemplo para poder construir una tabla o grilla en donde esta pueda ser editada colocándole controles como checkbox, textbox, dropdownlist, etc dentro de ella en cada celda para llenar un detalle.

             Como comente en el post inicial quiero hacer un detalle de venta, y lo mas razonable es tener una grilla editable, tal como se hacía en un proyecto windows forms, o por último aconsejarme si es mejor utilizar el control html table, o gridview que he visto en algunos foros para poder investigar por mi cuenta.

             Nuevamente gracias por la ayuda.

    Saludos,

    Oscar.

         

     

    martes, 21 de junio de 2016 13:48
  • Gracias JC!,

           Tu respuesta también me sirvió. Se agradece la colaboración, y si tienes un link de ejemplo para construir una tabla o grilla en donde esta pueda ser editada colocándole controles como checkbox, textbox, dropdownlist dentro de ella en cada celda para llenar un detalle te lo agradecería de igual forma.

             Gracias por la ayuda.


    Saludos,

    Oscar.

    martes, 21 de junio de 2016 13:52
  • OACS,

    En desarrollos ASP .Net MVC es bastante común utilizar Grid.MVC que permite paginación, ordenamiento, filtros, etc. Grid.MVC paso a paso. Puedes realizar edición de celdas bajo la siguiente técnica MVC Grid Inline Edit

    martes, 21 de junio de 2016 14:22