Quantcast
Channel: ASP.NET AJAX + Ajax Control Toolkit (ACT)
Viewing all articles
Browse latest Browse all 5678

populate dropdown list with ajax

$
0
0

MVC database fisrt EF


    public partial class Cursos
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Cursos()
        {
            this.Marcações = new HashSet<Marcações>();
            this.Módulos = new HashSet<Módulos>();
        }
    
        public int ID_Curso { get; set; }
        public string ID_Entidade { get; set; }
        public string Curso { get; set; }
        public Nullable<System.DateTime> Data_Início { get; set; }
        public Nullable<System.DateTime> Data_Fim { get; set; }
        public Nullable<int> Localidade { get; set; }
        public Nullable<int> Modalidade { get; set; }
        public Nullable<int> Área { get; set; }
        public Nullable<int> Horas { get; set; }
        public string Observações { get; set; }
    
        public virtual Áreas Áreas { get; set; }
        public virtual Entidades Entidades { get; set; }
        public virtual Localidades Localidades { get; set; }
        public virtual Modalidades Modalidades { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Marcações> Marcações { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Módulos> Módulos { get; set; }
    }
}

    public partial class Módulos
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Módulos()
        {
            this.Marcações = new HashSet<Marcações>();
        }
    
        public int ID_Módulo { get; set; }
        public string ID_Entidade { get; set; }
        public Nullable<int> ID_Curso { get; set; }
        public Nullable<int> ID_Formador { get; set; }
        public string Módulo { get; set; }
        public Nullable<int> Área { get; set; }
        public Nullable<int> Duração { get; set; }
    
        public virtual Áreas Áreas { get; set; }
        public virtual Cursos Cursos { get; set; }
        public virtual Entidades Entidades { get; set; }
        public virtual Formadores Formadores { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Marcações> Marcações { get; set; }
    }
}

   public partial class Marcações
    {
        public int ID_Marcação { get; set; }
        public string ID_Entidade { get; set; }
        public Nullable<int> ID_Curso { get; set; }
        public Nullable<int> ID_Módulo { get; set; }
        public Nullable<System.DateTime> Data { get; set; }
        public Nullable<int> Hora { get; set; }
    
        public virtual Cursos Cursos { get; set; }
        public virtual Entidades Entidades { get; set; }
        public virtual Horas Horas { get; set; }
        public virtual Módulos Módulos { get; set; }
    }
}

Database first!!!!

so in my Create view i have:

@model ora.Marcações

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>


@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    
    <div class="form-horizontal">
        <h4>Marcações</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.ID_Entidade, "ID_Entidade", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownList("ID_Entidade", null, htmlAttributes: new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.ID_Entidade, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(m => m.Cursos, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownListFor(m => m.Cursos,
                  new SelectList(ViewBag.Cursos, "ID_Curso", "Curso"),
                  "Selecione Curso",
                  new { @class = "form-control", @onchange = "FillMódulo()" })
                @Html.ValidationMessageFor(m => m.Cursos, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(m => m.Módulos, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownListFor(m => m.Módulos,
           new SelectList(Enumerable.Empty<SelectListItem>(), "ID_Módulo", "Módulo"),
                  "Selecione Módulo",
                  new { @class = "form-control" })
                @Html.ValidationMessageFor(m => m.Módulos, "", new { @class = "text-danger" })
            </div>
        </div>


        <div class="form-group">
            @Html.LabelFor(model => model.Data, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Data, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Data, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Hora, "Hora", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownList("Hora", null, htmlAttributes: new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.Hora, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
    @Scripts.Render("~/bundles/ajax")
   
<script>

    function FillMódulo() {
    var cursoId = $('#Cursos').val();
    $.ajax({
        url: '/Marcações/FillMódulo',
        type: "GET",
        dataType: "JSON",
        data: { Cursos: cursoId},
        success: function (modulos) {
            $("#Módulos").html(""); // clear before appending new list
            $.each(modulos, function (i, modulo) {
                $("#Módulos").append(
                    $('<option></option>').val(modulo.ID_Módulo).html(modulo.Módulo));
            });
        }
    });
    }

</script>
}

 marcações controller :

   // GET: Marcações/Create
        public ActionResult Create()
        {
           // ViewBag.ID_Curso = new SelectList(db.Cursos, "ID_Curso", "ID_Curso");
            ViewBag.ID_Entidade = new SelectList(db.Entidades, "ID_Entidade", "Entidade_Formadora");
            ViewBag.Hora = new SelectList(db.Horas, "ID_Hora", "Hora");
        //    ViewBag.ID_Módulo = new SelectList(db.Módulos, "ID_Módulo", "ID_Módulo");

            ViewBag.Cursos = db.Cursos;


            return View();
        }

        // POST: Marcações/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "ID_Marcação,ID_Entidade,ID_Curso,ID_Módulo,Data,Hora")] Marcações marcações)
        {
            if (ModelState.IsValid)
            {
                db.Marcações.Add(marcações);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

        //    ViewBag.ID_Curso = new SelectList(db.Cursos, "ID_Curso", "ID_Curso", marcações.ID_Curso);
            ViewBag.ID_Entidade = new SelectList(db.Entidades, "ID_Entidade", "Entidade_Formadora", marcações.ID_Entidade);
            ViewBag.Hora = new SelectList(db.Horas, "ID_Hora", "Hora", marcações.Hora);
        // ViewBag.ID_Módulo = new SelectList(db.Módulos, "ID_Módulo", "ID_Módulo", marcações.ID_Módulo);


            ViewBag.Cursos = db.Cursos;


            return View(marcações);
        }


        public ActionResult FillMódulo(int state)
        {
            var cities = db.Módulos.Where(c => c.ID_Curso == state);
            return Json(cities, JsonRequestBehavior.AllowGet);
        }

Why Cursos don't update Módulos "on change"?

Can u help ?


Viewing all articles
Browse latest Browse all 5678

Trending Articles