基于某些条件,我在 Page_Init() 中动态创建了一些复选框、下拉列表和文本框。在同一页面中,我有一个在设计时创建的提交按钮(在 aspx 页面中)。以下是部分代码。文本框的可见性由复选框控制。
现在我有两个问题需要解决: (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";
}
}