我正在使用带有文本框控件(txtid)的aspx页面(example.aspx),并且在同一页面上我创建了一个带有图像按钮(click.png)的用户控件(access.ascx)。我必须将文本框(txtid)检索到用户控件中。如何检索文本框控件(txtid)的值到usercontrol页面(access.ascx)?
答案 0 :(得分:3)
尝试类似:
TextBox txt= (TextBox)this.Parent.FindControl("txtid");
将进入你的usercontrol。 this.Parent应该引用example.aspx页面。
答案 1 :(得分:2)
在您的用户控件中,您可以添加如下属性:
public property Text
{
..
}
然后页面可以将页面文本框中的值分配给此属性,然后用户控件可以使用该属性。您也可以使用SetText(string text)
方法。
答案 2 :(得分:1)
试试这个
TextBox txt1 = (TextBox)this.Parent.FindControl("txtid")
答案 3 :(得分:1)
在您的用户控件中:
TextBox textBox = (TextBox)this.FindSiblingControl("txtid");
支持方式:
public static class StaticClassToHandleExtensions
{
public static Control FindSiblingControl(this Control control, string id)
{
Control parent = control.Parent;
while (parent.GetType() != typeof(ContentPlaceHolder) && parent.GetType() != typeof(Page))
parent = parent.Parent;
return parent.FindControl(id);
}
}
第一级Parent
可能与您的控件不在同一级别,因此您需要继续向上移动。此示例在ContentPlaceHolder
上停止,它将是页面的顶级,它的主页面为Page
,这将是没有母版页的页面的顶级。 FindControl
方法将搜索其整个控件树,这意味着它将搜索多个级别的深度,因此这是最安全和最简单的解决方案。