2013-04-26 71 views
3

我有一个带有文本框控件(txtid)的aspx页面(example.aspx),并且在同一页面上创建一个带有图像的用户控件(access.ascx)按钮(click.png)。我必须将文本框(txtid)检索到用户控件中。我如何检索文本框控件(txtid)在用户控件页面(access.ascx)中的值?如何访问从页面到用户控件的文本框值

回答

2

尝试类似:

TextBox txt= (TextBox)this.Parent.FindControl("txtid"); 

可能会包含在你的用户控件。这个.Parent应该让你参考example.aspx页面。

2

在用户控件,您可以添加一个属性,如:

public property Text 
{ 
    .. 
} 

然后页面可以从页面的文本框中的值赋给这个属性,它的用户控件可以再使用。您也可以使用SetText(string text)方法。

1

试试这个

TextBox txt1 = (TextBox)this.Parent.FindControl("txtid") 
+1

@Paritosh已经给出了同样的答案 – Rahul 2013-04-26 13:01:10

+0

@Rahul kisi ke回答同样的nahi ho sakte kya ..? – 2013-04-26 13:03:48

+0

在同样的问题两个相同的答案与相同的控制名称,如“txtid”,,很搞笑.. – Rahul 2013-04-26 13:07:08

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方法将搜索其整个控件树,这意味着它将搜索多个级别的深度,因此这是最安全和最简单的解决方案。

+0

或您的ascx可能包含一个公共属性Page名称可以说MyParentPage,您可以在其中保存实际的页面引用。 – mtsiakiris 2013-04-26 13:12:12

相关问题