2013-03-18 110 views
1

我有兩個下拉列表,其中一個在頁面加載時填充,另一個只在第一個列表中選擇一個值時填充。基於另一個下拉列表中的選定值動態填充下拉列表

<asp:DropDownList ID = "base_ddl" runat="server" ToolTip="Base" OnSelectedIndexChanged = "BaseSelected"> 
// snip... 
</asp:DropDownList> 

然後,第二下拉列表(secondary_ddl)在OnSelectedIndexChanged方法,BaseSelected填充:作爲第一個下拉列表中定義。

public void BaseSelected(object sender, EventArgs e) 
    { 
     if (base_ddl.SelectedValue == "-1") 
     { 
      secondary_ddl.Visible = false; 
     } 
     else 
     { 
      secondary_ddl.Items.Clear(); 

      // extract information to populate dropdown here 
      // snip. 
      IList<InfoContainer> info = getInfoBasedOnSelected(base_ddl.Value); 

      foreach (InfoContainer i in info) 
      { 
       secondary_ddl.Items.Add(new ListItem(i.name, i.value)); 
      } 
     } 
    } 

這是不行的,這會導致這樣一個問題:爲什麼?我如何動態更新OnSelectedIndexChanged函數的下拉菜單?

+1

首先你不需要在第二個下拉數據綁定爲你添加項目到它的。並檢查你的清單是否有任何價值? – Zaki 2013-03-18 17:54:59

+0

@Samim我不這麼認爲,這是在調試時添加的。我肯定項目會被添加到列表中(通過並看到它們)。刪除了那行代碼以避免再次出現,謝謝。 – Jim 2013-03-18 17:55:51

+0

「這不起作用」是什麼意思?你期望什麼?你看到了什麼?第一個下拉列表是否將AutoPostBack設置爲true? – Igor 2013-03-18 17:57:20

回答

1

1日設定的base_ddl

AutoPostBack="True"屬性,然後

secondary_ddl.Items.Clear(); 
IList<InfoContainer> info = getInfoBasedOnSelected(base_ddl.Value); 
secondary_ddl.DataTextField = "name"; 
secondary_ddl.DataValueField = "value"; 
secondary_ddl.DataSource = info; 
secondary_ddl.DataBind(); 
+0

AutoPostBack是必需的屬性。添加解決了問題。謝謝 – Jim 2013-03-18 18:04:35

相關問題