2013-03-18 4 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

первую очередь вам не нужно DataBind на втором раскрывающемся списке, как вы добавляете детали к ним. и проверить свой список, имеет ли он какую-то ценность? – Zaki

+0

@Samim Я так не думал, что было добавлено при отладке. Я уверен, что элементы добавляются в список (вышли и увидели их). Удалил эту строку кода, чтобы избежать этого, спасибо. – Jim

+0

Что означает «Это не работает»? Что вы ожидаете и что видите? В первом раскрывающемся списке AutoPostBack установлено значение true? – Igor

ответ

1

первый набор AutoPostBack="True" свойство base_ddl

и затем

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

Смежные вопросы

 Смежные вопросы