none
Llenar un combo con datos de otra tabla en MVC RRS feed

  • Pregunta

  • Buenas tardes, estoy empezando a programar en MVC y me surgió una duda con los combos, 

    cuando doy de alta un mantenimiento quiero asignarle un especialista de mantenimiento, para ello tengo definido 3 tablas
    1.- Mantenimiento (Id_manten, descrip,Id_especialista_mant)
    2.- Especialista_mantenimiento (Id_especialista_mant,Especialidad,id_persona)
    3.- persona(id_persona,Nombre,Apellido,...)

    cuando muestro el combo en el create del mantenimiento quiero que me muestre el nombre y apellido del especialista.

    actualmente en el combo me muestra el id_persona o la especialidad, lo armé mas o menos siguiendo la explicación de un post 

    No se me ocurre como mostrar los datos de la persona.

    necesito que me ayuden, lo que actualmente hice fue esto:

    ----------------------------------------------------
    model:

     public IEnumerable<Especialista_mantenimiento> Listapersonalmantenimiento()
     {

    var lista_estado = ctx.ExecuteQuery<Especialista_mantenimiento>
                                   (@"select e.Id_especialista_mant,p.Apellido,p.Apellido + ',  ' + p.Nombre as NombreCompleto, e.Especialidad
                                      from Especialista_mantenimiento e inner join Persona p on e.Id_persona = p.Id_persona").ToList();

                return lista_estado;
    }
    -------------------------------------------
    controlador:

    public ActionResult Create()
    {
                var registro = new Mantenimiento();
     ViewBag.Id_especialista_mant = new SelectList(MODELO.Listapersonalmantenimiento(), "Id_especialista_mant", "id_persona", registro.Id_especialista_mant);
               
    return View(registro);

    }
    ----------------------------------------------
    vista: 

     Personal Mantenimiento  : @Html.DropDownList("Id_especialista_mant") 
            Descrip mantenimiento   : @Html.EditorFor(model => model.descrip)
    ---------------------------------------------
    Esto me muestra el "Id_especialista_mant", "id_persona", pero no el nombre, ni apellido del especialista
    Espero haber sido claro y desde ya muchísimas gracias de ante mano, espero que tenga solución mi problema y sino seguramente me va a poder guiar como puedo encarar esta cuestión.  

    lo saluda cordialmente

    Pablo.
    domingo, 2 de noviembre de 2014 22:51

Todas las respuestas

  • >>actualmente en el combo me muestra el id_persona o la especialidad, lo armé mas o menos siguiendo la explicación de un post

    podrias enviar la info para cargar el combo dentro del mismo model o podrias usar el ViewBag

    [ASP.NET MVC] Carga DropDownList dependientes

    lo que no veo en tu codigo es donde le indicas cuando haces

    @Html.DropDownList("Id_especialista_mant")

    cuando es la propiedad del model que usara para seleccionar el item del combo

    si quieres seguir tu camino con el ViewBag debes usar un SelectList como se indica aqui

    MVC3 DropDownList + ViewBag issue

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 3 de noviembre de 2014 0:52
  • Buen día Lenadro, gracias por tu ayuda, me hiciste dar cuenta que me faltó pasarle datos al DropDownList, ahora voy a probar siguiendo el camino del ViewBag y te aviso.

    Ahora me conviene hacerlo con un ViewBag o lo hago todo desde el Model sguiendo tu ejemplo "Carga DropDownList dependientes" ???

    Gracias.

    Saludos.

    lunes, 3 de noviembre de 2014 14:57
  • >>Ahora me conviene hacerlo con un ViewBag o lo hago todo desde el Model sguiendo tu ejemplo "Carga DropDownList dependientes" ??

    depende, con el ViewBag quizas sea mas simple ya que no tienes que definir nada en una clase, pero bueno depende del gusto de cada uno  como implementarlo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 3 de noviembre de 2014 15:07