2010-08-05 2 views
1

Мне нужно создать несколько dropdownlists на clientclick. Это новые dropdownlists на каждом клике. Я поместил кнопку и написал код при клике.Создание нескольких списков DropDownLists

защищен недействительным addReq1_Click (объект отправителя, ImageClickEventArgs е)

{ 
    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); 
} 

Здесь "DSUsers" является SqlDataSource.

"i" - статическая переменная.

«serarch2» является HTML таблица с Runat сервера теге

Проблема только один контроль становится rendred, после этого на каждый дополнительный клик становится заменен же DropDownList. На страницу не добавлен новый DropDownList.

Thank you.

ответ

1

Когда вы динамически добавляете какие-либо элементы управления на свою страницу, они теряются при следующей обратной передаче. Чтобы это сработало, вам нужно будет протестировать i в вашем PreInit или Init событии и создать там правильное количество строк.

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 (dropdownlist) после генерации нового ddl, вероятно, здесь каждый раз, когда мы воссоздаем предыдущие ddl. Но как преодолеть эту проблему. – Gokul

+0

Переместите вышеуказанный код в событие Init или PreInit, по этой ссылке: http://stackoverflow.com/questions/3019760/access-values-of-controls-dynamically-created-on-postback –

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