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