基于某些条件,我在 page_load() 中动态创建了一些复选框、下拉列表和文本框。在同一页面中,我有一个在设计时(在 aspx 页面中)创建的提交按钮。现在在提交按钮的单击事件处理程序中,我需要从下拉列表等中获取所有选中的复选框和选择的值。但是由于这些控件是在 page_load 中创建的,而不是在设计时创建的,所以我不能获得任何价值。有什么办法可以得到这些值吗?
更新:
我还有两个问题:
drp.selectedIndex 始终初始化为 0 而不是 -1。我在 Page_Init 中添加了 drp.selectedIndex=-1。但在 cmdShow_Click 中,drp.selectedIndex 为 0。
此外,文本框的可见性由复选框控制。我有以下代码。但是在回发期间,即使选中了复选框,文本框也不会显示。有什么办法可以解决吗?
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);
cell.Controls.Add(new LiteralControl("<br />"));
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";
}
}