我正在上一个类,它会在我的网络表单中添加一些控件。 现在我需要通过我的类访问动态添加的控件。 任何人都可以告诉我如何从服务器端代码访问动态添加的控件。
答案 0 :(得分:0)
如果你动态添加了控件,那么你已经引用了你添加的控件;只是保留该参考。
如果由于某种原因无法使用,正如其他人已经建议的那样,FindControl("ID_OF_CONTROL")
。
但是,在将控件添加到Controls集合之前,请确保已设置控件的Id
。 :
var tbItem = new TextBox();
tbItem.Id = "tbItem_Id";
// add to some place holder
phLocation.Controls.Add(tbItem);
您现在可以使用FindControl("tbItem_Id")
来引用添加的控件。
如果失败,请确保您掌握了页面的生命周期。请求,您可能会发现在搜索控件时实际上并没有添加控件。
但我再说一遍,你已经有了参考资料,将其存储起来并重复使用。
答案 1 :(得分:0)
我找到了解决问题的方法。点击所有控件。
public static IEnumerable<Control> GetControls(ControlCollection controlCollection)
{
foreach (Control control in controlCollection)
{
yield return control;
if (control.Controls == null || control.Controls.Count == 0)
continue;
foreach (var sub in GetControls(control.Controls))
{
yield return sub;
}
}
}
创建IEnumerable列表后,检查Control的ID。
foreach (Control c in ctr__)
{
if (c.ClientID == "dropUGrp")
{
//Code goes here
break;
}
}