有關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的任何屬性了
           }
       }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章