我有一个带有文本框控件(txtid)的aspx页面(example.aspx),并且在同一页面上我正在创建一个带有图像按钮(click.png)的用户控件(access.ascx)。我必须将文本框(txtid)检索到用户控件中。如何将文本框控件(txtid)的值检索到用户控件页面(access.ascx)中?
问问题
12291 次
4 回答
3
尝试类似:
TextBox txt= (TextBox)this.Parent.FindControl("txtid");
这将进入您的用户控件。this.Parent 应该为您提供对 example.aspx 页面的引用。
于 2013-04-26T12:54:46.913 回答
2
在您的用户控件中,您可以添加如下属性:
public property Text
{
..
}
然后页面可以将页面文本框中的值分配给该属性,然后用户控件可以使用该属性。您也可以使用一种SetText(string text)
方法。
于 2013-04-26T12:54:25.993 回答
1
尝试这个
TextBox txt1 = (TextBox)this.Parent.FindControl("txtid")
于 2013-04-26T12:54:38.697 回答
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
可能与您的控制不在同一级别,因此您需要继续往上走。这个带有 stop on ContentPlaceHolder
which 将成为页面顶层的示例是它有一个母版页,该母版页Page
将是没有母版页的页面的顶层。该FindControl
方法将搜索其整个控件树,这意味着它将搜索多个级别的深度,因此这是最安全和最简单的解决方案。
于 2013-04-26T13:05:28.337 回答