2009-04-30 5 views
4

채워지는 약 10 개의 드롭 다운 목록 컨트롤이 있습니다. 각 필드의 일부 필드를 복사/붙여 넣기 및 수정하는 대신 프로그래밍 방식으로 만들고 싶습니다. 이 작업을 수행 할 수 있습니까?ASP.Net : 동적으로 생성 된 목록 및 데이터 소스 드롭 다운

다음은 그 중 하나입니다. 프로그래밍 방식으로 10 개의 드롭 다운 목록 컨트롤과 각각의 SqlDataSource 컨트롤을 추가하고 싶습니다.

<asp:SqlDataSource ID = "ddlDAGender" runat=server 
    ConnectionString="<%$ ConnectionStrings:test1ConnectionString %>" 
    SelectCommand = "select GenderID,Gender from mylookupGender" 
    > 
    </asp:SqlDataSource> 


<asp:Label ID="Label3" runat="server" Text="Gender"></asp:Label> 

     <asp:DropDownList ID="ddlGender" runat="server" 
       DataSourceid="ddlDAGender" 
       DataTextField="Gender" DataValueField="GenderID" 

    > 

</asp:DropDownList> 

답변

11

언제든지 컨트롤을 동적으로 만들 수 있습니다. 그러나이 경우 모든 드롭 다운 목록이 다르면 개인 ID와 데이터 소스를 할당해야하기 때문에 아무 것도 저장하지 못합니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     BindDropDownLists(); 
    } 
} 

protected void Page_Init(object sender, EventArgs e) 
{ 

     SqlDataSource sqlDS = new SqlDataSource(); 
     sqlDS.ConnectionString = ConfigurationManager.ConnectionStrings[0].ToString(); 
     sqlDS.SelectCommand = "select GenderID,Gender from mylookupGender"; 
     form1.Controls.Add(sqlDS); 

     DropDownList ddl = new DropDownList(); 
     ddl.ID = "dddlGender"; 
     ddl.DataSource = sqlDS; 
     ddl.DataTextField = "Gender"; 
     ddl.DataValueField = "GenderID"; 
     form1.Controls.Add(ddl); 

     // ... Repeat above code 9 times or put in a for loop if they're all the same... 
} 

private void BindDropDownLists() 
{ 
    foreach (Control ctl in form1.Controls) 
    { 
     if (ctl is DropDownList) 
     { 
      (ctl as DropDownList).DataBind(); 
     } 
    } 
} 
+0

뭔가가있는 DropDownList 컨트롤을 만드는 누락되었습니다

는 다음과 같은 코드가 보일 수 있습니다 무엇. 질문과 같은 속성을 추가해야합니다 (DataSourceid = "ddlDAGender", DataTextField = "Gender", DataValueField = "GenderID"). –