从ASPX页面中的UserControls访问控件

时间:2012-03-08 08:28:26

标签: c# asp.net

如何从ASPX页面中的UserControls访问控件? 例如: 我想访问在ASPX页面上的usercontrol中的gridview。

请帮帮我。

3 个答案:

答案 0 :(得分:0)

最好的方法是在UserControl中提供您可以访问的属性。

例如:

public GridView UserGrid
{
     get
     {
         return GridView1;
     }
}

但问题是为什么你需要这个。

经验法则:只展示尽可能少的内容。通过这种方式,您的代码将是最强大和可读的。所以它会例如最好是公开DataSource而不是完整的GridView

另一方面,如果您希望页面对UserControl中的事件做出反应,它应该提供您的页面可以处理的自定义事件(例如 UserDeleted )。

Page-UserControl-Commmunication

答案 1 :(得分:0)

因为控件现在在同一级别上没有关于彼此的任何内容,所以必须使用父页面来获取它。试试这个逻辑:

  1. 创建一个引用您父页面的属性(您的控件通常所在的页面(由于控件的分层可能会有所不同)

  2. 在页面上创建一个属性,引用网格所在的用户控件,或直接链接到该网格。

  3. page.aspx

    public UserControl UserGridControl
    {
         get;
         set;
    }
    

    userControl.ascx

    public Page ParentPage
    {
         get;
         set;
    }
    

    示例电话:

    首先实例化属性。之后,使用以下语句来访问该控件的任何内容(例如我在这里使用Foo()作为一个虚拟方法,但似乎有人不清楚):

    otherControl.ascx:

    this.ParentPage.UserGridControl.Foo();
    

    编辑:想要一个直接的代码示例,只能从页面执行此操作吗?请参阅Tim Schmelters的回答。如果您还需要一种方法从另一个用户控件调用网格。使用我的。

答案 2 :(得分:0)

试试这个:

GridView GridView1 = (GridView)WebUserControl1.FindControl("GridView1");

其中WebUserControl1是.aspx页面上的使用控制ID。

希望这会有所帮助..