2016-12-13 1 views
0

Ich habe gelesen für 2 Tage jede einzelne Frage, die wie mein Problem hier aussieht und lesen Sie mehrere Seiten und Tutorials und sogar angesehene Videos und ich kann es einfach nicht verstehen oder es funktionieren .. Was ich versuche zu tun ist, dass ich 2 Dropdown-Listen habe, eine ist "Departamentos", die man sich als Staat vorstellen kann und "Municipios", die man sich als County vorstellen kann. Was ich brauche und egal, was ich gerade NICHT schaffen kann, ist, dass wenn ich ein Departamento auswähle, NUR die Municipios von diesem Departamento auf der Dropdown-Liste erscheinen. Ich bin wirklich ein komplettes Noob in Bezug auf Programmierung und leider glaube ich, ich habe mit etwas viel zu groß für mich begonnen, so tut mir leid, wenn dies eine grundlegende, wirklich einfache Sache für Sie zu tun ist.Cascading Dropdown-Liste MVC5 mit fließenden Nhibernate

Die departamento Klasse:

public virtual int id_departamento { get; set; } 
public virtual string descripcion { get; set; }  

    //i specify Relationship for fluent Nhibernate to municipios since it is a 1-n 
    public virtual IList<Municipios> Municipios { get; set; } 

Die municipio Klasse:

public virtual int id_municipio { get; set; } 
public virtual string municipio { get; set; } 
public virtual int id_departamento { get; set; }//THis is the FK from Departamento 

Und heres Sitios meine Hauptklasse, wo ich alles verbinden zu: Dies ist für die Nhibernate Beziehungen ist

public virtual Departamentos Departamento { get; set; }   
public virtual Municipios Municipios { get; set; } 

Dies ist für die Listen auf dem gleichen Sitios cla ss:

public virtual List<Departamentos> Departamentos { get; set; } 
public virtual List<Municipios> municipiosLista { get; set; } 

Jetzt MVC gehen ist dies der Controller i für haben das Get erstellen, wo ich die Listen der Departamento und Municipio bevölkern gezeigt werden:

using (ISession session = NhibernateHelper.OpenSession()) 
     {     
      var deptos = session.Query<Departamentos>().ToList(); 
      var munis = session.Query<Municipios>().ToList();      

      var instanciadelacopia=new Sitios 
      { 
       Departamentos = deptos, 
       municipiosLista = munis     
      }; 
      return View(instanciadelacopia);    
      } 

Und das schaffen Ansicht für diese spezifische Drop-Down-Teil:

@using (Html.BeginForm()) 
{ 
@Html.AntiForgeryToken() 

<div class="form-horizontal"> 
    <h4>Sitios</h4> 
    <hr /> 
    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
<div class="form-group"> 
    <label class="control-label col-md-2"> Departamento </label> 
    <div class="col-md-10"> 
@Html.DropDownListFor(model => model.id_departamento, new SelectList(Model.Departamentos, "id_departamento", "descripcion"), "--Select--", new {@id = "depto"}) 
    </div> 
</div>  
<div class="form-group"> 
    <label class="control-label col-md-2"> Municipio </label> 
    <div class="col-md-10"> 
@Html.DropDownListFor(model => model.id_municipio, new SelectList(Model.municipiosLista, "id_municipio", "municipio"), "--Select--", new { @id = "muni" }) 
    </div> 
</div> 

Alles funktioniert gut, da es mir alle Werte bringt für mich von der DB zu wählen, wo ich bin stecken und vorantreiben kann nicht ist, dass ich einen Cascading Drop-Down für die Notwendigkeit municipios Liste, dass, wenn ich bestimmte departamento nur die Municipios des ausgewählten Departamento auswählen auf der Liste erscheinen. Zum Beispiel wähle ich departamento "atlantida" aus, dessen ID 1 ist, dann werden nur die municipios angezeigt, die den Fremdschlüssel von Departamentos = 1 haben, was impliziert, dass Jquery benötigt wird.

Wäre wirklich gut, wenn jemand mir dabei helfen kann, fühle ich mich so gestresst, weil ich einfach nicht herausfinden kann, was ich tun muss. Dank

Alle Beispiele, die ich gesehen habe, sind über JSON mit wie diese: http://www.c-sharpcorner.com/uploadfile/4d9083/creating-simple-cascading-dropdownlist-in-mvc-4-using-razor/ aber da ich bereits die alle Daten auf den Dropdown-Listen zur Verfügung habe ich glaube, ich brauche nicht, dass und stattdessen nur eine einfache Jquery-Funktion, die Ich kann nicht schaffen.

Antwort

1

es mit diesem Gelöst:

<script type="text/javascript">//Script for Cascading Dropdown 
    $(function() { 
     $('#id_departamento').change(function() { 
      var departmentId = $(this).val() || 0; 
      $.ajax({ 
       url: '/Sitios/Municipios/', 
       type: 'POST', 
       data: { id_departamento: departmentId }, // parametro 

       dataType: 'json', 
       success: function (data) { 

        var options = $('#id_municipio'); 
        $('option', options).remove(); // 

        options.append($('<option />').val('').text('---')); 

        $.each(data, function() { 
         options.append($('<option />').val(this.id).text(this.name)); 
        }); 
       } 

      }); 
     }); 

     });