3

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

4

4 回答 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 ContentPlaceHolderwhich 将成为页面顶层的示例是它有一个母版页,该母版页Page将是没有母版页的页面的顶层。该FindControl方法将搜索其整个控件树,这意味着它将搜索多个级别的深度,因此这是最安全和最简单的解决方案。

于 2013-04-26T13:05:28.337 回答