3

我已经创建了一个usercontrol里面treeview

现在我已经把它放在了一个aspx page两次中,Id让我们说usercontrolAusercontrolB

它们都被一页一页地加载。
现在我想得到控制pre-render event的对象。我怎样才能实现它?usercontrolAtreeviewusercontrolB


4

6 回答 6

4

您需要拥有 的实例才能usercontrolB访问treeview两个用户控件的控件。因此,请尝试将实例保存在一些适当的存储中,以便在pre-render事件中访问它。

  1. 在 中引入一个属性来保存 UC 类型User-Control

    public MyUserControl MainUserControl { get; set; }
    
  2. 在父 ASPX 中将属性设置为usercontrolB

    usercontrolA.MainUserControl = usercontrolB;
    usercontrolB.MainUserControl = usercontrolB;
    
  3. 现在您可以使用该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 回答