如何从代码后面访问动态添加控件

时间:2013-07-30 11:54:25

标签: c# asp.net dynamic-programming

我正在上一个类,它会在我的网络表单中添加一些控件。 现在我需要通过我的类访问动态添加的控件。 任何人都可以告诉我如何从服务器端代码访问动态添加的控件。

2 个答案:

答案 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;
        }
    }