这段时间在做一个EIP专案,实现了一个基于MOSS2007的全局导航用户/自定义控件。控件用到了一些之前接触不多的技术。比如通过MOSS内部接口取得WebApplication、SiteCollection等;创建ASP.Net复合自定义控件;通过Code形式动态为DataList添加Template并绑定事件;公开属性给设计器;用Javascript制作浮动菜单;等等。

具体实现代码

用户控件方式(GlobalNavigator.ascx):

<%@ Control Language="C#" ClassName="GlobalNavigator" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Collections" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.Web.UI.WebControls" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Import Namespace="Microsoft.SharePoint.Administration" %>

<script runat="server">

    private ArrayList intranet = new ArrayList();
    private ArrayList teamSite = new ArrayList();
    private ArrayList mySite = new ArrayList();
    private ArrayList partner = new ArrayList();
    private ArrayList internet = new ArrayList();
    private string intranetName;
    private string teamSiteName;
    private string mySiteName;
    private string partnerName;
    private string internetName;
    private bool intranetVisable = true;
    private bool teamSiteVisable = true;
    private bool mySiteVisable = true;
    private bool partnerVisable = true;
    private bool internetVisable = true;
    private string itemCSSClass;
    private string menuCSSClass;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            GetSiteList();

            dlIntranet.DataSource = intranet;
            dlIntranet.DataBind();

            dlTeamSite.DataSource = teamSite;
            dlTeamSite.DataBind();

            dlMySite.DataSource = mySite;
            dlMySite.DataBind();

            dlPartner.DataSource = partner;
            dlPartner.DataBind();

            dlInternet.DataSource = internet;
            dlInternet.DataBind();
        }
    }

    public string IntranetName
    {
        get { return intranetName; }
        set { intranetName = value; }
    }

    public string TeamSiteName
    {
        get { return teamSiteName; }
        set { teamSiteName = value; }
    }

    public string MySiteName
    {
        get { return mySiteName; }
        set { mySiteName = value; }
    }

    public string PartnerName
    {
        get { return partnerName; }
        set { partnerName = value; }
    }

    public string InternetName
    {
        get { return internetName; }
        set { internetName = value; }
    }

    public bool IntranetVisable
    {
        get { return intranetVisable; }
        set { intranetVisable = value; }
    }

    public bool TeamSiteVisable
    {
        get { return teamSiteVisable; }
        set { teamSiteVisable = value; }
    }

    public bool MySiteVisable
    {
        get { return mySiteVisable; }
        set { mySiteVisable = value; }
    }

    public bool PartnerVisable
    {
        get { return partnerVisable; }
        set { partnerVisable = value; }
    }

    public bool InternetVisable
    {
        get { return internetVisable; }
        set { internetVisable = value; }
    }
    public string IntranetText
    {
        get { return lnkIntranet.Text; }
        set { lnkIntranet.Text = value; }
    }

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

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

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

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

    public string ItemCSSClass
    {
        get { return itemCSSClass; }
        set { itemCSSClass = value; }
    }

    public string MenuCSSClass
    {
        get { return menuCSSClass; }
        set { menuCSSClass = value; }
    }

    private void GetSiteList()
    {
        ArrayList siteList;
        SPWebServiceCollection webServices = new SPWebServiceCollection(SPFarm.Local);

        foreach (SPWebService webService in webServices)
        {
            foreach (SPWebApplication webApp in webService.WebApplications)
            {
                if (webApp.IsAdministrationWebApplication)
                    continue;

                siteList = new ArrayList();
                foreach (SPSite site in webApp.Sites)
                {
                    siteList.Add(new WebSiteInfo(site.RootWeb.Title, site.Url));
                }

                if (webApp.Name == intranetName)
                    intranet = siteList;
                else if (webApp.Name == teamSiteName)
                    teamSite = siteList;
                else if (webApp.Name == mySiteName)
                    mySite = siteList;
                else if (webApp.Name == partnerName)
                    partner = siteList;
                else if (webApp.Name == internetName)
                    internet = siteList;
            }
        }
    }

    class WebSiteInfo
    {
        private string siteTitle;
        private string siteUrl;

        public WebSiteInfo(string siteTitle, string siteUrl)
        {
            this.siteTitle = siteTitle;
            this.siteUrl = siteUrl;
        }

        public string SiteTitle
        {
            get { return siteTitle; }
        }

        public string SiteUrl
        {
            get { return siteUrl; }
        }
    }

    class NavigatorTemplate : ITemplate
    {
        public void InstantiateIn(Control container)
        {
            PlaceHolder pHolder = new PlaceHolder();
            HyperLink link = new HyperLink();
            link.ID = "link1";
            pHolder.Controls.Add(link);
            pHolder.DataBinding += new EventHandler(Item_DataBinding);


            container.Controls.Add(pHolder);
        }
    }

    static void Item_DataBinding(object sender, System.EventArgs e)
    {
        PlaceHolder pHolder = (PlaceHolder)sender;
        DataListItem item = (DataListItem)pHolder.NamingContainer;
        HyperLink link = (HyperLink)pHolder.FindControl("link1");
        link.NavigateUrl = (String)DataBinder.Eval(item.DataItem, "SiteUrl");
        link.Text = (String)DataBinder.Eval(item.DataItem, "SiteTitle");
    }
</script>

<script type="text/javascript">
function showNavigator(naviID)
{
    var objList = new Array("intranet","teamSite","mySite","partner","internet");
    for (var i=0; i<objList.length; i++)
        document.getElementById(objList[i]).style.display = "none";
       
    var obj = document.getElementById(naviID);
    obj.style.left = event.clientX - 20;
    obj.style.display = "block";
}
function hideNavigator(naviID)
{
    setTimeout("{document.getElementById('"+naviID+"').style.display = 'none';}",1000);
}
</script>

<div style="float: left; margin: 0 5px;" class="<%=itemCSSClass %>" onmouseleave="hideNavigator('intranet');">
    <div>
        <asp:HyperLink ID="lnkIntranet" NavigateUrl="javascript:void(0);" runat="server" onmouseenter="showNavigator('intranet');"
            Text="Intranet"></asp:HyperLink>
    </div>
    <div id="intranet" style="display: none; position: absolute; z-index: 20;" class="<%=menuCSSClass %>">
        <asp:DataList ID="dlIntranet" runat="server" CellSpacing="5">
            <ItemTemplate>
                <asp:HyperLink ID="HyperLink1" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.siteUrl")%>'
                    runat="server"><%# DataBinder.Eval(Container, "DataItem.siteTitle")%></asp:HyperLink>
            </ItemTemplate>
        </asp:DataList></div>
</div>
<div style="float: left; margin: 0 5px;" class="<%=itemCSSClass %>" onmouseleave="hideNavigator('teamSite');">
    <div>
        <asp:HyperLink ID="lnkTeamSite" NavigateUrl="javascript:void(0);" runat="server" onmouseenter="showNavigator('teamSite');"
            Text="TeamSite"></asp:HyperLink></div>
    <div id="teamSite" style="display: none; position: absolute; z-index: 20;" class="<%=menuCSSClass %>">
        <asp:DataList ID="dlTeamSite" runat="server" CellSpacing="5">
            <ItemTemplate>
                <asp:HyperLink ID="HyperLink1" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.siteUrl")%>'
                    runat="server"><%# DataBinder.Eval(Container, "DataItem.siteTitle")%></asp:HyperLink>
            </ItemTemplate>
        </asp:DataList></div>
</div>
<div style="float: left; margin: 0 5px;" class="<%=itemCSSClass %>" onmouseleave="hideNavigator('mySite');">
    <div>
        <asp:HyperLink ID="lnkMySite" NavigateUrl="javascript:void(0);" runat="server" onmouseenter="showNavigator('mySite');"
            Text="MySite"></asp:HyperLink></div>
    <div id="mySite" style="display: none; position: absolute; z-index: 20;" class="<%=menuCSSClass %>">
        <asp:DataList ID="dlMySite" runat="server" CellSpacing="5">
            <ItemTemplate>
                <asp:HyperLink ID="HyperLink1" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.siteUrl")%>'
                    runat="server"><%# DataBinder.Eval(Container, "DataItem.siteTitle")%></asp:HyperLink>
            </ItemTemplate>
        </asp:DataList></div>
</div>
<div style="float: left; margin: 0 5px;" class="<%=itemCSSClass %>" onmouseleave="hideNavigator('partner');">
    <div>
        <asp:HyperLink ID="lnkPartner" NavigateUrl="javascript:void(0);" runat="server" onmouseenter="showNavigator('partner');"
            Text="Partner"></asp:HyperLink></div>
    <div id="partner" style="display: none; position: absolute; z-index: 20;" class="<%=menuCSSClass %>">
        <asp:DataList ID="dlPartner" runat="server" CellSpacing="5">
            <ItemTemplate>
                <asp:HyperLink ID="HyperLink1" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.siteUrl")%>'
                    runat="server"><%# DataBinder.Eval(Container, "DataItem.siteTitle")%></asp:HyperLink>
            </ItemTemplate>
        </asp:DataList></div>
</div>
<div style="float: left; margin: 0 5px;" class="<%=itemCSSClass %>" onmouseleave="hideNavigator('internet');">
    <div>
        <asp:HyperLink ID="lnkInternet" NavigateUrl="javascript:void(0);" runat="server" onmouseenter="showNavigator('internet');"
            Text="Internet"></asp:HyperLink></div>
    <div id="internet" style="display: none; position: absolute; z-index: 20;" class="<%=menuCSSClass %>">
        <asp:DataList ID="dlInternet" runat="server" CellSpacing="5">
            <ItemTemplate>
                <asp:HyperLink ID="HyperLink1" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.siteUrl")%>'
                    runat="server"><%# DataBinder.Eval(Container, "DataItem.siteTitle")%></asp:HyperLink>
            </ItemTemplate>
        </asp:DataList></div>
</div>


自定义控件方式(GlobalNavigator.cs):

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;

namespace EasyPortal
{
    [
    AspNetHostingPermission(SecurityAction.Demand,
        Level = AspNetHostingPermissionLevel.Minimal),
    AspNetHostingPermission(SecurityAction.InheritanceDemand,
        Level = AspNetHostingPermissionLevel.Minimal),
    ToolboxData("<{0}:GlobalNavigator runat=\"server\"> </{0}:GlobalNavigator>"),
    ]

    public class GlobalNavigator : CompositeControl
    {
        private HyperLink lnkIntranet;
        private HyperLink lnkTeamSite;
        private HyperLink lnkMySite;
        private HyperLink lnkPartner;
        private HyperLink lnkInternet;
        private DataList dlIntranet;
        private DataList dlTeamSite;
        private DataList dlMySite;
        private DataList dlPartner;
        private DataList dlInternet;
        private ArrayList intranet = new ArrayList();
        private ArrayList teamSite = new ArrayList();
        private ArrayList mySite = new ArrayList();
        private ArrayList partner = new ArrayList();
        private ArrayList internet = new ArrayList();
        private string intranetName;
        private string teamSiteName;
        private string mySiteName;
        private string partnerName;
        private string internetName;
        private bool intranetVisable = true;
        private bool teamSiteVisable = true;
        private bool mySiteVisable = true;
        private bool partnerVisable = true;
        private bool internetVisable = true;
        private string itemCSSClass;
        private string menuCSSClass;

        [
        Bindable(true),
        Category("WebApp"),
        Description("The WebApp name for the Intranet sites.")
        ]
        public string IntranetName
        {
            get
            {
                return intranetName;
            }
            set
            {
                intranetName = value;
            }
        }

        [
        Bindable(true),
        Category("WebApp"),
        Description("The WebApp name for the TeamSite sites.")
        ]
        public string TeamSiteName
        {
            get
            {
                return teamSiteName;
            }
            set
            {
                teamSiteName = value;
            }
        }

        [
        Bindable(true),
        Category("WebApp"),
        Description("The WebApp name for the MySite sites.")
        ]
        public string MySiteName
        {
            get
            {
                return mySiteName;
            }
            set
            {
                mySiteName = value;
            }
        }

        [
        Bindable(true),
        Category("WebApp"),
        Description("The WebApp name for the Partner sites.")
        ]
        public string PartnerName
        {
            get
            {
                return partnerName;
            }
            set
            {
                partnerName = value;
            }
        }

        [
        Bindable(true),
        Category("WebApp"),
        Description("The WebApp name for the Internet sites.")
        ]
        public string InternetName
        {
            get
            {
                return internetName;
            }
            set
            {
                internetName = value;
            }
        }

        [
        Bindable(true),
        Category("WebApp"),
        Description("The WebApp Visability for the Intranet sites.")
        ]
        public bool IntranetVisable
        {
            get
            {
                return intranetVisable;
            }
            set
            {
                intranetVisable = value;
            }
        }

        [
        Bindable(true),
        Category("WebApp"),
        Description("The WebApp Visability for the TeamSite sites.")
        ]
        public bool TeamSiteVisable
        {
            get
            {
                return teamSiteVisable;
            }
            set
            {
                teamSiteVisable = value;
            }
        }

        [
        Bindable(true),
        Category("WebApp"),
        Description("The WebApp Visability for the MySite sites.")
        ]
        public bool MySiteVisable
        {
            get
            {
                return mySiteVisable;
            }
            set
            {
                mySiteVisable = value;
            }
        }

        [
        Bindable(true),
        Category("WebApp"),
        Description("The WebApp Visability for the Partner sites.")
        ]
        public bool PartnerVisable
        {
            get
            {
                return partnerVisable;
            }
            set
            {
                partnerVisable = value;
            }
        }

        [
        Bindable(true),
        Category("WebApp"),
        Description("The WebApp Visability for the Internet sites.")
        ]
        public bool InternetVisable
        {
            get
            {
                return internetVisable;
            }
            set
            {
                internetVisable = value;
            }
        }

        [
        Bindable(true),
        Category("SiteText"),
        DefaultValue("Intranet"),
        Description("The text for the Intranet sites.")
        ]
        public string IntranetText
        {
            get
            {
                EnsureChildControls();
                return lnkIntranet.Text;
            }
            set
            {
                EnsureChildControls();
                lnkIntranet.Text = value;
            }
        }

        [
        Bindable(true),
        Category("SiteText"),
        DefaultValue("TeamSite"),
        Description("The text for the TeamSite sites.")
        ]
        public string TeamSiteText
        {
            get
            {
                EnsureChildControls();
                return lnkTeamSite.Text;
            }
            set
            {
                EnsureChildControls();
                lnkTeamSite.Text = value;
            }
        }

        [
        Bindable(true),
        Category("SiteText"),
        DefaultValue("MySite"),
        Description("The text for the MySite sites.")
        ]
        public string MySiteText
        {
            get
            {
                EnsureChildControls();
                return lnkMySite.Text;
            }
            set
            {
                EnsureChildControls();
                lnkMySite.Text = value;
            }
        }

        [
        Bindable(true),
        Category("SiteText"),
        DefaultValue("Partner"),
        Description("The text for the Partner sites.")
        ]
        public string PartnerText
        {
            get
            {
                EnsureChildControls();
                return lnkPartner.Text;
            }
            set
            {
                EnsureChildControls();
                lnkPartner.Text = value;
            }
        }

        [
        Bindable(true),
        Category("SiteText"),
        DefaultValue("Internet"),
        Description("The text for the Internet sites.")
        ]
        public string InternetText
        {
            get
            {
                EnsureChildControls();
                return lnkInternet.Text;
            }
            set
            {
                EnsureChildControls();
                lnkInternet.Text = value;
            }
        }

        [
        Bindable(true),
        Category("Appearance"),
        Description("The CSS class name for the navigator item.")
        ]
        public string ItemCSSClass
        {
            get
            {
                return itemCSSClass;
            }
            set
            {
                itemCSSClass = value;
            }
        }

        [
        Bindable(true),
        Category("Appearance"),
        Description("The CSS class name for the navigator menu.")
        ]
        public string MenuCSSClass
        {
            get
            {
                return menuCSSClass;
            }
            set
            {
                menuCSSClass = value;
            }
        }

        protected override void RecreateChildControls()
        {
            EnsureChildControls();
        }

        protected override void CreateChildControls()
        {
            Controls.Clear();
            GetSiteList();

            lnkIntranet = new HyperLink();
            lnkTeamSite = new HyperLink();
            lnkMySite = new HyperLink();
            lnkPartner = new HyperLink();
            lnkInternet = new HyperLink();

            dlIntranet = new DataList();
            dlTeamSite = new DataList();
            dlMySite = new DataList();
            dlPartner = new DataList();
            dlInternet = new DataList();

            HyperLink[] linkList = new HyperLink[] { lnkIntranet, lnkTeamSite, lnkMySite, lnkPartner, lnkInternet };
            DataList[] dataLists = new DataList[] { dlIntranet, dlTeamSite, dlMySite, dlPartner, dlInternet };
            ArrayList[] siteList = new ArrayList[] { intranet, teamSite, mySite, partner, internet };
            string[] titleList = new string[] { "Intranet", "TeamSite", "MySite", "Partner", "Internet" };
            string[] divIDList = new string[] { "intranet", "teamSite", "mySite", "partner", "internet" };

            for (int i = 0; i < 5; i++)
            {
                linkList[i].Text = titleList[i];
                linkList[i].NavigateUrl = "#";
                linkList[i].Attributes.Add("onmouseenter", "showNavigator('" + divIDList[i] + "');");

                dataLists[i].CellSpacing = 5;
                dataLists[i].ItemTemplate = new NavigatorTemplate();
                dataLists[i].DataSource = siteList[i];
                dataLists[i].DataBind();

                this.Controls.Add(linkList[i]);
                this.Controls.Add(dataLists[i]);
            }
        }

        protected override void Render(HtmlTextWriter writer)
        {
            HyperLink[] linkList = new HyperLink[] { lnkIntranet, lnkTeamSite, lnkMySite, lnkPartner, lnkInternet };
            DataList[] dataLists = new DataList[] { dlIntranet, dlTeamSite, dlMySite, dlPartner, dlInternet };
            bool[] appVisable = new bool[] { intranetVisable, teamSiteVisable, mySiteVisable, partnerVisable, internetVisable };
            string[] divIDList = new string[] { "intranet", "teamSite", "mySite", "partner", "internet" };

            AddAttributesToRender(writer);

            RegisterScript();

            for (int i = 0; i < 5; i++)
            {
                if (appVisable[i])
                    writer.AddAttribute("style", "float: left; margin: 0 5px;");
                else
                    writer.AddAttribute("style", "float: left; margin: 0 5px; display: none;");
                writer.AddAttribute("class", itemCSSClass);
                writer.AddAttribute("onmouseleave", "hideNavigator('" + divIDList[i] + "');");
                writer.RenderBeginTag(HtmlTextWriterTag.Div);
                writer.RenderBeginTag(HtmlTextWriterTag.Div);
                linkList[i].RenderControl(writer);
                writer.RenderEndTag();
                writer.AddAttribute("id", divIDList[i]);
                writer.AddAttribute("style", "display: none; position: absolute; z-index: 20;");
                writer.AddAttribute("class", menuCSSClass);
                writer.RenderBeginTag(HtmlTextWriterTag.Div);
                dataLists[i].RenderControl(writer);
                writer.RenderEndTag();
                writer.RenderEndTag();
            }
        }

        private void RegisterScript()
        {
            string scriptStr = "<script type='text/javascript'>" +
                "function showNavigator(naviID) {" +
                "var objList = new Array('intranet','teamSite','mySite','partner','internet');" +
                "for (var i=0; i<objList.length; i++)" +
                "document.getElementById(objList[i]).style.display = 'none';" +
                "var obj = document.getElementById(naviID);" +
                "obj.style.left = event.clientX - 20;" +
               " obj.style.display = 'block'; }" +
                "function hideNavigator(naviID) {" +
                "setTimeout(\"{ document.getElementById('\"+naviID+\"').style.display = 'none';}\",1000); }" +
                "</script>";

            this.Page.ClientScript.RegisterStartupScript(this.GetType(), "showNavigator", scriptStr);
        }

        private void GetSiteList()
        {
            ArrayList siteList;
            SPWebServiceCollection webServices = new SPWebServiceCollection(SPFarm.Local);
           
            foreach (SPWebService webService in webServices)
            {
                foreach (SPWebApplication webApp in webService.WebApplications)
                {
                    if (webApp.IsAdministrationWebApplication)
                        continue;

                    siteList = new ArrayList();
                    foreach (SPSite site in webApp.Sites)
                    {
                        siteList.Add(new WebSiteInfo(site.RootWeb.Title, site.Url));
                    }

                    if (webApp.Name == intranetName)
                        intranet = siteList;
                    else if (webApp.Name == teamSiteName)
                        teamSite = siteList;
                    else if (webApp.Name == mySiteName)
                        mySite = siteList;
                    else if (webApp.Name == partnerName)
                        partner = siteList;
                    else if (webApp.Name == internetName)
                        internet = siteList;
                }
            }
        }

        static void Item_DataBinding(object sender, System.EventArgs e)
        {
            PlaceHolder pHolder = (PlaceHolder)sender;
            DataListItem item = (DataListItem)pHolder.NamingContainer;
            HyperLink link = (HyperLink)pHolder.FindControl("link1");
            link.NavigateUrl = (String)DataBinder.Eval(item.DataItem, "SiteUrl");
            link.Text = (String)DataBinder.Eval(item.DataItem, "SiteTitle");
        }

        class NavigatorTemplate : ITemplate
        {
            public void InstantiateIn(Control container)
            {
                PlaceHolder pHolder = new PlaceHolder();
                HyperLink link = new HyperLink();
                link.ID = "link1";
                pHolder.Controls.Add(link);
                pHolder.DataBinding += new EventHandler(Item_DataBinding);


                container.Controls.Add(pHolder);
            }
        }

        class WebSiteInfo
        {
            private string siteTitle;
            private string siteUrl;

            public WebSiteInfo(string siteTitle, string siteUrl)
            {
                this.siteTitle = siteTitle;
                this.siteUrl = siteUrl;
            }

            public string SiteTitle
            {
                get { return siteTitle; }
            }

            public string SiteUrl
            {
                get { return siteUrl; }
            }
        }
    }

}


使用说明:

一、資源介紹

        GlobalNavigator.ascx:以用戶控件的方式實現的GlobalNavigator源文件。

        EasyPortal.dll:以自定義控件的方式實現的GlobalNavigator打包文件。

        UserGuide.doc:控件使用説明文檔。

二、功能説明

        該控件提供基於MOSS2007平臺的全局導航功能。控件定義了五种類型的WebApplication,分別為:IntranetTeamSiteMySitePartnerInternet。用戶在MOSS2007中創建了WebApplication SiteCollection后,在控件中指定各种類型的WebApplication名稱。控件根據用戶配置的WebApplication名稱,從MOSS2007中抓取到所有符合當前用戶權限規則的SiteCollection,並以連接的形式呈現在頁面,點擊連接可以導航到各個不同類型的WebApplication下的SiteCollection

        不同類型的WebApplication以連接形式水平排列(排列順序不可配置),通過配置可以隱藏任何一個WebApplication。各WebApplication下的SiteCollection以浮動菜單的形式呈現,默認情況下不可見,當鼠標移動到某一WebApplication処,該WebApplication下的SiteCollection浮動菜單自動彈出。點擊某一SiteCollection,頁面將導向對應的網頁。當鼠標移出WebApplicationSiteCollection所在區域,浮動菜單在一秒鐘后自動隱藏。

三、運行環境

        該控件專門針對MOSS2007設計(其它MOSS版本未經測試,兼容性未知),控件必須運行于MOSS2007Web頁面上。

        控件已經在IE6.0上測試通過,對於其它版本的IE或其它類型的瀏覽器,不能保證其兼容性(主要是考慮到不同瀏覽器對Javascript支持不同

四、公用屬性説明

名稱

功能説明

IntranetName

Intranet所對應的WebApplication名稱

TeamSiteName

TeamSite所對應的WebApplication名稱

MySiteName

MySite所對應的WebApplication名稱

PartnerName

Partner所對應的WebApplication名稱

InternetName

Internet所對應的WebApplication名稱

IntranetVisable

是否顯示Intranet

TeamSiteVisable

是否顯示TeamSite

MySiteVisable

是否顯示MySite

PartnerVisable

是否顯示Partner

InternetVisable

是否顯示Internet

IntranetText

Intranet在頁面上顯示的名稱,默認為“Intranet

TeamSiteText

TeamSite在頁面上顯示的名稱,默認為“TeamSite

MySiteText

MySite在頁面上顯示的名稱,默認為“MySite

PartnerText

Partner在頁面上顯示的名稱,默認為“Partner

InternetText

Internet在頁面上顯示的名稱,默認為“Internet

ItemCSSClass

ItemCSS Class名稱。注:Item包括WebApplicationSiteCollection

MenuCSSClass

SiteCollection menuCSS Class名稱。注:Menu僅表示某一WebApplication下的SiteCollection

五、部署運用

部署用戶控件GlobalNavigator.ascx

1.      將控件文件拷貝到MOSS2007存放用戶控件的目錄下,如:C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES

2.      編輯MasterPage文件,在文件頭部注冊該控件:

        <%@ Register TagPrefix="EasyPortal" TagName="GNavigator" src="~/_controltemplates/GlobalNavigator.ascx" %>

3.      在頁面需要應用該控件的地方添加控件:

        <EasyPortal:GNavigator id="navi1" runat="server" InternetName=" InternetName" IntranetName=" IntranetName" MySiteName=" MySiteName" PartnerName=" PartnerName" TeamSiteName=" TeamSiteName" />

4.      配置相關屬性,定義CSS Class以控制控件外觀。

5.      測試效果。

部署自定義控件EasyPortal.dll

posted on 2007-12-25 15:26  Jacky Huang  阅读(502)  评论(0编辑  收藏  举报