我有一个包含2个单选按钮和其他文本框和标签的Asp页面。事情是,当选择单选按钮时,我必须让它们中的一些消失(不可见)。
我考虑使用ControlCollection并添加我需要使其不可见的控件。但是一旦我将它们带到ControlCollection,它们就会从我的网页中消失。我不明白为什么。
C#代码:
private void createGroup()
{
ControlCollection cc = CreateControlCollection();
cc.Add(txt1);
cc.Add(txt2);
// and so on...
}
如果我在Page_Load()事件上调用此函数,则页面上没有控件。
由于
答案 0 :(得分:2)
您是否尝试过为单选按钮选择处理程序中的每个控件设置Visible=false
?
void YourRadioButton_CheckChanged(Object sender, EventArgs e)
{
txt1.Visible = !YourRadioButton.Checked;
txt2.Visible = !YourRadioButton.Checked;
// and so on...
}
如果您想在页面加载中创建控件集合以简化操作,只需创建List<WebControl>
。
List<WebControl> yourControls = new List<WebControl>();
//...
protected void Page_Load(object sender, EventArgs e)
{
yourControls.Add(txt1);
yourControls.Add(txt2);
// and so on...
}
答案 1 :(得分:1)
Page对象已经有一组名为Controls的控件。你可以这样做:
void YourRadioButton_CheckChanged(Object sender, EventArgs e)
{
foreach(Control control in this.Controls)
{
if(control is Textbox)
{
// do something
}
}
}
答案 2 :(得分:0)
应在PreInit
事件中创建动态控件。阅读ASP.NET page lifecycle。