2013-07-05 124 views
3

您好,我正在使用asp.net和javascript,我希望在dropdownlist1更改時使用列表填充dropdownlist2。asp。當下拉列表發生變化時,使用javascript填充下拉列表

public Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>(); 

    DataTable dt = new DataTable(); 
    dt.Columns.Add("Name"); 
    dt.Columns.Add("Type"); 

    foreach (DataDefinitionResponse dr in _dr) 
    { 
     if (dr.Type != "Group" && dr.Type != "File") 
     { 
      DataRow row = dt.NewRow(); 
      row["Name"] = dr.Name; 
      row["Type"] = dr.Type; 
      dt.Rows.Add(row); 

      if (dr.Type == "Dropdown") 
      { 
       string[] strSplit = dr.ListValue.Split('|'); 
       List<string> lst = new List<string>(); 

       foreach (string word in strSplit) 
       { 
        lst.Add(word); 
       } 
       dict.Add(dr.Name, lst); 
      } 
     } 
    } 
    ddlFieldName.DataSource = dt; 
    ddlFieldName.DataTextField = "Name"; 
    ddlFieldName.DataValueField = "Type"; 
    ddlFieldName.DataBind(); 
    ddlFieldName.ClearSelection(); 

以上是我的代碼來填充第一個下拉列表w/c是ddlFieldName。正如你可以看到我使用字典和宣佈全球。現在我需要使用javascript填充第二個下拉列表。

任何人都可以幫助我。

Thx。

回答

0

當Dropdownlist1被改變得到這是通過使用下面的腳本選擇的元件

<script type="text/javascript"> 
$jq14(document).ready(function() { 
$jq14("#Dropdownlist1").change(function (e) { 
window.location = "@Url.Content("~/Controller/ActionMethod/?id=")" + $jq14(this).val(); 
}); 
}); 
</script> 

然後在您的控制器的操作方法接收該值並把它放入ViewBag對象像 ViewBag = ID; 然後最後在您的視圖中將Dropdownlist2中的ViewBag值作爲播種器的循環或列表填充

+2

請您詳細說明一下。謝謝。 – user2530833

+0

如果你使用ASP.Net MVC,那麼這個工作。實際上,當發生更改事件時,您必須從dropdownlist1中獲取選定的值。一旦獲得該值,例如dropdownlist1包含從dropdownlist1中選擇某個國家時的國家/地區,則必須在該國家/地區顯示州,以便您調用控制器方法並通過價值(所選國家)。在您的控制器中,您可以獲取該國家/地區並找到其狀態列表並將其返回到您的視圖。在你看來,你用從控制器返回的數據填充你的第二個下拉列表。 –