有关C#+ASP.NET中用户控件(webusercontrol)使用问题2则

一、如何在页面中访问在Site.Master中引用到的用户控件。

这里假设给定三个页面:Site.Master、Default.aspx和WebUserControl.ascx。Site.Master是Default.aspx页面中使用到的页面模板,WebUserControl是Site.Master模板页中使用的用户自定义控件类。

问题:在Default.aspx.cs代码中访问到Site.Master中用到的WebUserCotrol实例。

解决办法:

       1、在Default.aspx页面中增加下面的标签说明:

        <%@ Register src="WebUserControl.ascx" tagname="WebUserControl" tagprefix="uc1" %>

       2、在Default.aspx.cs中需要访问到该用户控件的地方使用下面的代码:

       WebUserControl uc = (WebUserControl)Master.FindControl("WebUserControl1");
        if (uc != null)
        {
             //具体的操作代码
        }

        注:WebUserControl1是Site.Master中使用的WebUserControl实例ID。


二、如何在页面中控制在Site.Master中引用到的用户控件。

问题:如前所述,我们已经可以访问到模板页中用到的用户控件实例,那么如何控制用户控件内的组件呢,比如设置其中标签(Label)组件的文本显示,或当其中TreeView组件结点选择变化时做些处理。

解决办法:

       1、在WebUserControl.ascx申明设置标签组件文本显示的属性和设置TreeView组件SelectedNodeChanged的属性。代码如下:

    public EventHandler onSelNode
    {
        set
        {
            TreeView1.SelectedNodeChanged += value;
        }
    }

    public string Text
    {
        get
        {
            return Label1.Text;
        }
        set
        {
            Label1.Text = value;
        }
    }

    注:Label1和TreeView1是WebUserControl用到的Label和TreeView组件ID。

        2、在需要控制WebUserControl内组件的地方使用下面的代码:

        WebUserControl uc = (WebUserControl)Master.FindControl("WebUserControl1");
        if (uc != null)
        {

            uc.Text = "";
            uc.onSelNode = TreeView1_SelectedNodeChanged;
        }

        public void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
       {
            TreeView t = (TreeView)sender;
            if (t != null)
           {
              //在这里就可以访问到TreeView的任何属性了
           }
       }



你可能感兴趣的:(.net)