如何从ASPX页面中的UserControls访问控件? 例如: 我想访问在ASPX页面上的usercontrol中的gridview。
请帮帮我。
答案 0 :(得分:0)
最好的方法是在UserControl
中提供您可以访问的属性。
例如:
public GridView UserGrid
{
get
{
return GridView1;
}
}
但问题是为什么你需要这个。
经验法则:只展示尽可能少的内容。通过这种方式,您的代码将是最强大和可读的。所以它会例如最好是公开DataSource
而不是完整的GridView
。
另一方面,如果您希望页面对UserControl中的事件做出反应,它应该提供您的页面可以处理的自定义事件(例如 UserDeleted )。
答案 1 :(得分:0)
因为控件现在在同一级别上没有关于彼此的任何内容,所以必须使用父页面来获取它。试试这个逻辑:
创建一个引用您父页面的属性(您的控件通常所在的页面(由于控件的分层可能会有所不同)
在页面上创建一个属性,引用网格所在的用户控件,或直接链接到该网格。
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。
希望这会有所帮助..