如何访问从页面到用户控件的文本框值
我有一个带有文本框控件(txtid)的aspx页面(example.aspx),并且在同一页面上创建一个带有图像的用户控件(access.ascx)按钮(click.png)。我必须将文本框(txtid)检索到用户控件中。我如何检索文本框控件(txtid)在用户控件页面(access.ascx)中的值?如何访问从页面到用户控件的文本框值
尝试类似:
TextBox txt= (TextBox)this.Parent.FindControl("txtid");
可能会包含在你的用户控件。这个.Parent应该让你参考example.aspx页面。
在用户控件,您可以添加一个属性,如:
public property Text
{
..
}
然后页面可以从页面的文本框中的值赋给这个属性,它的用户控件可以再使用。您也可以使用SetText(string text)
方法。
试试这个
TextBox txt1 = (TextBox)this.Parent.FindControl("txtid")
内部用户控件:
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
方法将搜索其整个控件树,这意味着它将搜索多个级别的深度,因此这是最安全和最简单的解决方案。
或您的ascx可能包含一个公共属性Page名称可以说MyParentPage,您可以在其中保存实际的页面引用。 – mtsiakiris 2013-04-26 13:12:12
@Paritosh已经给出了同样的答案 – Rahul 2013-04-26 13:01:10
@Rahul kisi ke回答同样的nahi ho sakte kya ..? – 2013-04-26 13:03:48
在同样的问题两个相同的答案与相同的控制名称,如“txtid”,,很搞笑.. – Rahul 2013-04-26 13:07:08