我有一个Placeholder
我在panel
中有一个动态创建的placeholder
,我在面板中也有一些动态添加的单选按钮,现在我可以使用{{1}如果它们是findControl()
的直接子项,则找到单选按钮。
我真的花了整整昨天试图找到它们placeholder
时的子元素。怎么办呢?
以下是我的代码:
Panel
答案 0 :(得分:0)
你应该使用它的Id递归搜索控件的方法。这意味着该方法将在(在您的情况下)占位符内搜索控件。如果方法找到控制权,它将返回它。如果没有,它将搜索每个占位符的子控制,“更深”。然后,如果找不到任何内容,它将在每个占位符子控件的子控件等中再搜索一个级别。)
powershell.exe -nologo -noprofile -command "&{ Add-Type -A 'System.IO.Compression.FileSystem' [System.IO.Compression.ZipFile]::CreateFromDirectory('c:/path/to/source/folder/', 'c:/path/to/output/file.zip');}"
然后像这样使用它:
private Control FindControl(string ctlToFindId, Control parentControl)
{
foreach (Control ctl in parentControl.Controls)
{
if (ctl.Id == ctlToFindId)
return ctl;
}
if (ctl.Controls != null)
{
var c = FindControl(ctlToFindId, ctl);
if (c != null) return c;
}
return null;
}
答案 1 :(得分:0)
查找控件递归是一个选项,但它也有几个down-sides。
如果您知道所有控件的ID,则可以使用FindControl
RadioButtonList myRadioButton = PlaceHolder1.FindControl("Panel1").FindControl("RadioButtonList1") as RadioButtonList;
Label1.Text = myRadioButton.SelectedValue;
但是您需要为动态添加的控件提供ID。
Panel myPanel = new Panel();
myPanel.ID = "Panel1";
RadioButtonList myRadioButton = new RadioButtonList();
myRadioButton.ID = "RadioButtonList1";
PlaceHolder1.Controls.Add(myPanel);
myPanel.Controls.Add(myRadioButton);