2017-07-22 2 views
1

Ich habe 2 einzelne Dropdown-Menüs und 1 Multi-Select-List-Box. folgend ist der Code in html. Ich habe zuerst den Wert vom ersten Drop-down ausgewählt (single select). entsprechend seinem Wert wurden zweite Drop-Down-Werte geladen. Dann wählte ich einen Wert aus der 2. Dropdown-Liste. Ideales Szenario ist nach 2. Drop-Down-Wert 3. Multi-Select-List-Box sollte mit Wert geladen werden. Ich habe ein gefunden seltsames Verhalten. Auch wenn in HTML Auswahloptionen angezeigt werden, zeigt es beim Rendern keine Ergebnisse an.ASP.NET MVC Mehrere Auswahllistenwerte nicht

<div class="row sub-container"> 
      <div class="sub-heading">Filter supplier/service provider by categories</div> 

      <div class="form-group clearfix"> 
       <label class="form-label col-md-3">Services Categories Level 1</label> 
       <div class="col-md-9"> 
        <section id="section-examples" class="attireBlock mod1"> 
         <div class=""> 
          <div class=""> 
           @Html.DropDownList("addServiceServiceCategoryLevel1", Model.ServiceCategoryList, "Please select a Category", new { @class = "form-control" }) 
          </div> 

         </div> 
        </section> 
       </div> 
      </div> 

      <div class="form-group clearfix"> 
       <label class="form-label col-md-3">Services Category Level2</label> 
       <div class="col-md-9"> 
        <section id="section-examples" class="attireBlock mod1"> 
         <div class=""> 
          @Html.DropDownList("addServiceServiceCategoryLevel2", new SelectList(string.Empty, "Id", "Name"), "Please select a Category", new { @class = "form-control" }) 
         </div> 
        </section> 
       </div> 
      </div> 

      <div class="form-group clearfix"> 
       <label class="form-label col-md-3">Services Category</label> 
       <div class="col-md-9"> 
        <section id="section-examples" class="attireBlock mod1"> 

         <div class="fstElement fstMultipleMode fstNoneSelected"> 


          @Html.ListBox("addServiceServiceCategory",new SelectList(string.Empty, "Id", "Name"), new { @class = "multipleSelect", @multiple = "" }) 
         </div> 
        </section> 
       </div> 
      </div> 

$(document).ready(function() { 

       $('.multipleSelect').fastselect(); 


    $("#addServiceServiceCategoryLevel2").on("change", function() { // whenever a selection is made 
     $("#addServiceServiceCategory").empty(); 

     var id = $("#addServiceServiceCategoryLevel2").val(); 

     $.ajax({ 
      type: 'POST', // we are calling json method 
      url: "/ServiceProviders/GetServiceCategoryLevel2", 
      dataType: 'json', 
      data: { id }, 
      success: function (states) { 

       $.each(states, function (i, state) { 
        $("#addServiceServiceCategory").append('<option value="' + state.Value + '">' + 
         state.Text + '</option>'); 
       }); 
      }, 
      error: function (ex) { 
       alert('Failed to retrieve states.' + ex); 
      } 
     }); 
     return false; 
    }); 

});

enter image description here

+0

verwenden Sie ein beliebiges js-plugin auf Ihrem 3. multi select? –

+0

ja. fastselect http://dbrekalo.github.io/fastselect/ –

+0

Sie haben nicht gezeigt, wie Sie das 3. Multi-Select füllen, aber vermutlich mit $ .ajax -> versuchen Sie initialisieren Sie Ihre 3. Multi-Select mit Ihrem js-Plugin, wenn Ajax-Update –

Antwort

1

Ich denke, Ihr Problem ist, dass Sie Ihre Optionen aktualisieren nach Sie initialisieren als fastselect

daher hat es nicht die neue Änderung abholen

Versuch erneut initialisieren einmal Ajax Erfolg Daten laden

so etwas wie:

$.ajax({ 
    type: 'POST', // we are calling json method 
    url: "/ServiceProviders/GetServiceCategoryLevel2", 
    dataType: 'json', 
    data: { id }, 
    success: function (states) { 

     $.each(states, function (i, state) { 
      $("#addServiceServiceCategory").append('<option value="' + state.Value + '">' + 
       state.Text + '</option>'); 
     }); 

     // re initalize fastselect` 
     $('.multipleSelect').fastselect(); 
    }, 
    error: function (ex) { 
     alert('Failed to retrieve states.' + ex); 
    } 
}); 
+0

Hallo Alan, nach Änderung wie oben Code, zeigt es immer noch als kein Ergebnis. Aber bevor ich den Code ändere, habe ich zunächst die Werte in der Drop-Down-Liste. Aber nachdem ich den Code geändert habe, habe ich auch beim ersten Mal die Werte in dropdown nicht bekommen. Es hat nicht funktioniert. –

+0

Ich muss wahrscheinlich Localy laufen lassen, um einen Test zu geben. Aber haben Sie ernsthaft darüber nachgedacht, ein anderes Plugin zu verwenden? dieser scheint nicht wirklich aktiv zu sein. IHO Ich würde select2 http://select2.github.io/examples.html empfehlen - Sie können leicht erreichen, was Sie wollen, mit einem anderen Weg, indem Sie ein lokales Array verwenden und dann Array mit AJax später aktualisieren. mehr Infos checkout https://Stackoverflow.com/a/17348414/2564920 –

+0

danke @Alan .. Ja, es kann Bug in Plugin sein .. wird auch Select2 .. –