C# 从ASPX页面中的UserControls访问控件
如何从ASPX页面中的UserControls访问控件? 例如: 我想访问ASPX页面上usercontrol中的gridviewC# 从ASPX页面中的UserControls访问控件,c#,asp.net,C#,Asp.net,如何从ASPX页面中的UserControls访问控件? 例如: 我想访问ASPX页面上usercontrol中的gridview 请帮助我。最好的方法是在用户控件中提供您可以访问的属性 例如: public GridView UserGrid { get { return GridView1; } } 但问题是你为什么需要这个 经验法则:只暴露尽可能少的东西。这样,您的代码将是最健壮和可读的。因此,例如,最好公开它的数据源,而不是完整的Grid
请帮助我。最好的方法是在用户控件中提供您可以访问的属性 例如:
public GridView UserGrid
{
get
{
return GridView1;
}
}
但问题是你为什么需要这个
经验法则:只暴露尽可能少的东西。这样,您的代码将是最健壮和可读的。因此,例如,最好公开它的数据源,而不是完整的GridView
另一方面,如果您想让页面对UserControl中的事件做出反应,那么它应该提供定制的eventse.g。用户删除了页面可以处理的内容
因为这些控件现在在同一级别上互不相关,所以您必须使用父页面来获取它。试试这个逻辑: 创建引用父页面的属性由于控件的分层,控件通常所在的页面可能会有所不同 在页面上创建一个属性,引用网格所在的usercontrol,或直接链接到该网格 page.aspx
public UserControl UserGridControl
{
get;
set;
}
userControl.ascx
public Page ParentPage
{
get;
set;
}
示例调用:
首先实例化属性。在那之后,使用下面的语句访问该控件中的任何内容,作为我在这里使用Foo的一个示例,作为一个伪方法使用,但似乎有人不清楚:
otherControl.ascx:
this.ParentPage.UserGridControl.Foo();
编辑:想要有一个直接的代码示例,以便只从页面上进行编辑?见Tim Schmelters的回答。如果您还需要一种从另一个用户控件调用网格的方法。用我的。试试这个:
GridView GridView1 = (GridView)WebUserControl1.FindControl("GridView1");
其中WebUserControl1是.aspx页上使用控件的ID
希望这有帮助。什么是福?没有申报。我也看不出你的ParentPage属性的用途。OP询问了如何从该页面访问位于ASPX页面中的UserControl的GridView。所以这是多余的。你真的在批评一个更宽泛的答案吗?我只给了OP一个额外的方法,从另一个用户控件加载它。。。这很糟糕吗?我没有否决你的答案虽然部分似乎是从我的答案中复制的,所以你的答案不错,但它没有添加任何内容,也没有引用OP的要求。很抱歉,在我首先编写解决方案的文本版本后,复制了你的属性定义。我本来可以自己写的,但如果我们能从头开始自己写每一段代码,我们就会失业。我从没说过你的答案是错的。我只是提供了一种从另一个用户控件实现的方法。鉴于OP只提供了一个非常简短的问题,我们的解决方案可能都是正确的。我以前有过这个相关的问题,最后,StackOverflow是一个知识来源。这个解决方案也可以在页面上使用。我编辑了这篇文章,如果只需要在页面级别上使用,可以参考你的文章。