2011-06-26 38 views
0

我正在使用級聯下拉列表。當我選擇使用webservice將make後綴makeId發送到服務器並返回模型。然後我添加模型到下拉列表ASP.NET MVC3級聯DropDownList無法正常工作

問題是。如果我使用Firebug工具在firefox中檢查模型下拉列表,我可以看到剛剛添加的模型,但是當我點擊它時會打開空白。

我正在使用jQuery Mobile和jQuery Selectbox。

這裏是我的代碼:

$(document).ready(function() { 
     $('#Makes').change(function() { 
      getModels(); 
     }); 
    }); 

function getModels() {  
    var make = $('#Makes').val();   
    $.ajax({ 
     type: "POST", 
     url: "/Services/CarService.asmx/Models", 
     data: "{makeId: '" + make + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      alert(response.d); 
      var models = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d; 
      $('#Models').attr('disabled', false).removeOption(/./);   
      for (var i = 0; i < models.length; i++) { 
       var val = models[i]; 
       var text = models[i]; 
       $('#Models').addOption(val, text, false);  
       alert(models[i]); 
      } 
     } 
    }); 
} 


@Html.DropDownList("Makes", "Please select make") 
<select id="Models"></select> 

[WebMethod] 
public List<string> Models(int makeId) 
{ 
    var dataContext = new SearchModel(); 
    var models = from m in dataContext.GetAllModels() 
       where m.Id == makeId 
       select m.Model; 
    return models.ToList(); 
} 

enter image description here

回答

0

嘗試使用

var ModelSel = document.getElementById('Models'); 
for (var i = 0; i < models.length; i++) { 
    var val = models[i]; 
    var text = models[i]; 
    ModelSel.options[i]=new Option(val, text);  
} 
+0

我試過了,但它並沒有固定的問題 –

+0

OK嘗試另一種方法來添加選項,而不是''addOption'.ex $(「#模式」)追加('<。選項值=「'+ val +'」>'+ text +'');'但是我不確定這會不會造成差異,但我們試試 –

+0

這是一樣的。我發現這個問題是因爲我參考了jQuery mobile。所以級聯下拉列表工作,但沒有參考jQuery手機 –

0

我已經找到了我的問題

刷新選擇

解決方案

如果您通過JavaScript操作選擇,則必須調用其上的刷新方法來更新視覺樣式。這裏有一個例子:

var myselect = $("select#foo"); 
myselect[0].selectedIndex = 3; 
myselect.selectmenu("refresh");