如何从Page到UserControl访问文本框值



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

试试这样写:

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

可以放在你的usercontrol中。这一点。家长应该给你一个例子的参考。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方法将搜索它的整个控件树,这意味着它将搜索多个层次的深度,所以这是最安全和最简单的解决方案。

最新更新