C# 无法访问动态控件

C# 无法访问动态控件,c#,asp.net,C#,Asp.net,我已经为“多视图”动态创建了视图。在视图控件中,我有一个Gridview控件,它有一个复选框控件。我在主aspx页面中有一个按钮,单击该按钮,它将检查(如果选中或不选中)所有复选框,并从gridview中获取相应的行。该视图用于选项卡式菜单。在每个选项卡中,gridview在运行时填充数据。已在Page_PreInit中定义了动态控件。 我无法访问该复选框。我将如何实现这一点 谢谢您应该使用如果您有控件的ID,递归FindControl可能会更有用 public static T FindCon

我已经为“多视图”动态创建了视图。在视图控件中,我有一个Gridview控件,它有一个复选框控件。我在主aspx页面中有一个按钮,单击该按钮,它将检查(如果选中或不选中)所有复选框,并从gridview中获取相应的行。该视图用于选项卡式菜单。在每个选项卡中,gridview在运行时填充数据。已在Page_PreInit中定义了动态控件。 我无法访问该复选框。我将如何实现这一点


谢谢

您应该使用

如果您有控件的ID,递归FindControl可能会更有用

public static T FindControlRecursive<T>(this Control parentControl, string id) where T : Control
    {
        T ctrl = default(T);

        if ((parentControl is T) && (parentControl.ID == id))
            return (T)parentControl;

        foreach (Control c in parentControl.Controls)
        {
            ctrl = c.FindControlRecursive<T>(id);

            if (ctrl != null)
                break;
        }
        return ctrl;
    }
// and then: Page.FindControlRecursive<CheckBox>(idOfYourControl);
public static T FindControlRecursive(此控件为parentControl,字符串id),其中T:Control
{
T ctrl=默认值(T);
if((parentControl为T)&&(parentControl.ID==ID))
返回(T)父控件;
foreach(parentControl.Controls中的控件c)
{
ctrl=c.FindControlRecursive(id);
如果(ctrl!=null)
打破
}
返回ctrl;
}
//然后:Page.FindControlRecursive(idOfYourControl);

我尝试使用FindControl,但它不起作用。比如说,当我使用.FindControl(chk1)时,它没有识别chk1(这是复选框)。你能告诉我我应该在哪里写FindContol方法吗。我需要在扣子的情况下你只有一个复选框吗?还是在每一排?如果您应该写入复选框的ID,那么每一行中都有复选框,并且该复选框也已在模板字段的ItemTemplate中动态生成。因此,您应该在每一行中调用FindControl,foreach(var r in rows)r.FindControl(“checkBoxId”);生成时为每个复选框指定id