2010-08-05 4 views
1

clientclick에서 여러 개의 드롭 다운리스트를 생성해야합니다. 모든 클라이언트 클릭에 대한 새로운 드롭 다운 목록입니다. 버튼을 놓고 클릭 이벤트에 코드를 작성했습니다. 여러 개의 DropDownLists 생성

여기

{ 
    DropDownList oDdl = new DropDownList(); 
    oDdl.ID = "ddlReq" + (++i).ToString(); 
    oDdl.DataSourceID = "DSUsers"; 
    oDdl.DataTextField = "UName"; 
    oDdl.DataValueField = "UName";   
    HtmlTableCell tc0 = new HtmlTableCell(); 
    HtmlTableCell tc1 = new HtmlTableCell(); 
    HtmlTableCell tc2 = new HtmlTableCell(); 
    HtmlTableCell tc3 = new HtmlTableCell(); 
    tc2.Controls.Add(oDdl); 
    HtmlTableRow tr = new HtmlTableRow(); 
    tr.Cells.Add(tc0); 
    tr.Cells.Add(tc1); 
    tr.Cells.Add(tc2); 
    tr.Cells.Add(tc3); 
    search2.Rows.Add(tr); 
} 

공극 addReq1_Click (객체 송신자 ImageClickEventArgs E)를 보호의 SqlDataSource는 "DSUsers"이다.

"i"는 정적 변수입니다.

"serarch2는"RUNAT 서버 태그 같은 DropDownList로 교체하기 때마다 추가 클릭에 그 이후

문제는 하나의 제어가 rendred지고있다

, 와 HTML 테이블입니다. 새 DropDownList가 페이지에 추가되지 않았습니다.

감사합니다.

답변

1

페이지에 컨트롤을 동적으로 추가하면 다음에 다시 게시 할 때 컨트롤이 손실됩니다. 이 작업을 수행하려면 PreInit 또는 Init 이벤트에서 i를 테스트하여 올바른 행 수를 만들어야합니다.

for (int x = 0 to i) { 
    DropDownList oDdl = new DropDownList(); 
    oDdl.ID = "ddlReq" + (++x).ToString(); 
    oDdl.DataSourceID = "DSUsers"; 
    oDdl.DataTextField = "UName"; 
    oDdl.DataValueField = "UName";   
    HtmlTableCell tc0 = new HtmlTableCell(); 
    HtmlTableCell tc1 = new HtmlTableCell(); 
    HtmlTableCell tc2 = new HtmlTableCell(); 
    HtmlTableCell tc3 = new HtmlTableCell(); 
    tc2.Controls.Add(oDdl); 
    HtmlTableRow tr = new HtmlTableRow(); 
    tr.Cells.Add(tc0); 
    tr.Cells.Add(tc1); 
    tr.Cells.Add(tc2); 
    tr.Cells.Add(tc3); 
    search2.Rows.Add(tr); 
} 

ASP.NET page lifecycle에 대한 필수 링크.

+0

감사합니다. Jason, 새 ddl을 생성 한 후 이전 ddl (dropdownlist)에서 선택한 값을 잃어 버렸습니다. 이전 ddl을 재 작성 할 때마다 여기에 있습니다. 그러나이 문제를 극복하는 방법. – Gokul

+0

위 코드를 Init 또는 PreInit 이벤트로 이동하십시오. http://stackoverflow.com/questions/3019760/access-values-of-controls-dynamically-created-on-postback –