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

+0

@Samim 그렇게 생각하지 않았습니다. 디버깅 할 때 추가되었습니다. 항목이 목록에 추가 (밟아서보고)하는 것이 좋습니다. 그 코드 줄을 제거하여 다시 올라 오지 않도록하십시오. 감사합니다. – Jim

+0

"이 작동하지 않습니다"는 의미는 무엇입니까? 너는 무엇을 기대하며 무엇을 보느냐? 첫 번째 드롭 다운에 AutoPostBack이 true로 설정되어 있습니까? – Igor

답변

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

관련 문제