我已经创建了一个usercontrol
里面treeview
。
现在我已经把它放在了一个aspx page
两次中,Id
让我们说usercontrolA
和usercontrolB
。
它们都被一页一页地加载。
现在我想得到控制pre-render event
的对象。我怎样才能实现它?usercontrolA
treeview
usercontrolB
问问题
16289 次
6 回答
4
您需要拥有 的实例才能usercontrolB
访问treeview
两个用户控件的控件。因此,请尝试将实例保存在一些适当的存储中,以便在pre-render
事件中访问它。
在 中引入一个属性来保存 UC 类型
User-Control
:public MyUserControl MainUserControl { get; set; }
在父 ASPX 中将属性设置为
usercontrolB
:usercontrolA.MainUserControl = usercontrolB; usercontrolB.MainUserControl = usercontrolB;
现在您可以使用该
MainUserControl
属性来访问您的TreeView
:MainUserControl.treeView1 ...
于 2012-12-27T12:48:41.860 回答
2
此示例用于在此表单上的任何控件上查找名为 treeview 的“usercontrolB”。
Control[] ctrl = this.Controls.Find("usercontrolB", true);
if (ctrl != null && ctrl.Length > 0)
{
TreeView tv = (TreeView)ctrl[0];
// do whatever you want with the treeview
}
于 2012-12-27T12:55:41.583 回答
1
为什么必须在 PreRender 中访问它?
您需要创建一个自定义事件:
主页
var uc1 = (UserControlType1)LoadControl("UC1.ascx");
var uc2 = (UserControlType1)LoadControl("UC2.ascx");
uc2.PreRendered += uc2_PreRendered;
public void uc2_PreRendered(object sender, TreeView tv){
// you can access your treeview from here
}
用户控制 B
public delegate void PreRenderDelegate(object sender, TreeView tv);
public event PreRenderDelegate PreRender;
public void OnPreRender(object sender, EventArgs e){
if(this.Prerendered!=null)
this.Prerendered(this, aTreeView);
}
于 2012-12-27T12:56:40.613 回答
0
您可以在 user-controlA 的OnPreRender
事件中使用以下代码:
var tree = this.Page.FindControl("uc2").FindControl("treeview1");
注意: “uc2”是 ASPX 页面中 User-ControlB 的 ID。
或者你可以试试这个:
var tree = this.Page.LoadControl("UserControlB.ascx").FindControl("treeview1");
于 2012-12-27T17:58:44.410 回答
0
(我只是重新发布我的帖子,以供其他人参考)
您始终可以使用控件的事件来更新 RadTreeView,方法是传递一些值作为属性并再次调用 RadTree(用户控件中的那个)的数据绑定方法……也就是说,您可以传递 RadTree 本身的对象,国际海事组织。
于 2013-01-04T19:06:21.867 回答
0
Var str=This.Page.findControl("UserControlName").FindControl("NameOfTheControlToFind")
于 2013-05-09T10:47:29.497 回答