На основании определенного условия я создал несколько флажков, dropdownlists и текстовых полей динамически в Page_Init(). На той же странице у меня есть кнопка «Отправить», которая создается во время время разработки (на странице aspx). Ниже приведена часть кода. Видимость текстового поля контролируется флажком.несколько проблем для этих элементов управления, динамически созданных в файле page_init
Теперь у меня есть две проблемы, которые необходимо решить: (1) ddl.selectedIndex всегда инициализируется 0 не -1. Но в обработчике событий Sumbit_Click() ddl.selectedIndex равен 0, даже я не выбрал ни одного элемента. (2) Также флажок установлен, во время обратной передачи текстовое поле не отображается. Есть ли способ исправить это?
DropDownList ddl = new DropDownList();
ddl.ID = "ddl" + id;
ddl.DataSource = subCallReasonEntityList;
ddl.DataTextField = "myText";
ddl.DataValueField = "id";
ddl.DataBind();
ddl.SelectedIndex = -1;
cell.Controls.Add(ddl);
CheckBox cb = new CheckBox();
cb.ID = "cb" + id;
cb.ClientIDMode = ClientIDMode.Static;
cell.Controls.Add(cb);
cell.Controls.Add(new LiteralControl("<br />"));
TextBox tb = new TextBox();
tb.ID = "txt" + id;
tb.ClientIDMode = ClientIDMode.Static;
tb.Attributes.Add("style", "display:none");
cb.Attributes.Add("onclick", "return cbOtherClicked('" + cb.ClientID + "', '" + tb.ClientID + "')");
cell.Controls.Add(tb);
function cbOtherClicked(control1, control2) {
var cbOther = document.getElementById(control1);
var txtOther = document.getElementById(control2);
if (cbOther.checked) {
txtOther.style.display = "block";
}
else {
txtOther.style.display = "none";
}
}
Это укажет вам в правильном направлении: http://stackoverflow.com/questions/4216329/asp-net-dynamically-created-controls-and-postback –