MOSS中的导航知识

来源:互联网 发布:dota2 lol 知乎 编辑:程序博客网 时间:2024/05/16 10:38

获取快速启动:

SPNavigationNodeCollection nodes = site.Navigation.QuickLaunch;

Spd中添加xml数据源控件,设置XPath属性/*/*,更改aspmenu控件的datasourceid属性为xml数据源控件,修改显示相关属性,添加<DataBindings><asp:MenuItemBinding DataMember="menuItem" NavigateUrlField="url" TextField="title" /></DataBindins>

MOSS中所有导航栏都是通过ASP:Menu控件或是ASP:TreeView控件绑定到一个NavigationDataSource实现的,因此每一个导航菜单都有两个控件共同实现。首先是一个ASP:Menu控件定义导航栏的样式和层级属性,其次是有一个 asp:SiteMapDataSourceSPNavigationProvider来作为导航栏的数据源。

<SharePoint:DelegateControl runat="server" ControlId="TopNavigationDataSource">
  
<Template_Controls>
   
<asp:SiteMapDataSource
     
ShowStartingNode="False"
     SiteMapProvider
="SPNavigationProvider"
     id
="topSiteMap"
     runat
="server"
     StartingNodeUrl
="sid:1002"/>
  
</Template_Controls>
 
</SharePoint:DelegateControl>

自己定义一个asp:menu控件也可以自定义导航

<asp:Menu DataSourceID="DemoXmlDataSource" ID="DemoCustomMenu" runat="server" 
BackColor
="#F1F1F1" DynamicHorizontalOffset="2" Font-Names="Verdana" ForeColor="#990000" 
StaticSubMenuIndent
="0" Orientation="Vertical" StaticDisplayLevels="2" ItemWrap="true" 
MaximumDynamicDisplayLevels
="0"> 
<DataBindings> 
<asp:MenuItemBinding DataMember="siteMapNode" NavigateUrlField="url" 
TextField
="title" ToolTipField="description" ValueField="title" /> 
</DataBindings> 
</asp:Menu> 
<asp:XmlDataSource DataFile="sitemap.xml" ID="DemoXmlDataSource" runat="server" XPath="/*/*"></asp:XmlDataSource> 

添加导航栏

                SPSite site = new SPSite(siteurl);
                SPWeb web = site.OpenWeb();

                SPList list = web.Lists["取件客服受理"];
                string listtitle = list.Title;          //
列表名称
                string listurl = list.DefaultViewUrl;   //
列表URL

                #region    添加一级导航栏
                SPNavigationNodeCollection navigationnode = web.Navigation.QuickLaunch;
                SPNavigationNode menuItem = new SPNavigationNode(listtitle, listurl, true);
                navigationnode.AddAsLast(menuItem);              
                #endregion

                #region   添加二级导航栏
                SPNavigationNode menuItem1 = new SPNavigationNode(listtitle, listurl, true);
                navigationnode[1].Children.AddAsLast(menuItem1);
                #endregion

                web.Update();

 删除导航栏

                int menuItemId = 0;
                SPNavigationNode menuItem = navigationnode.Navigation.GetNodeById(menuItemId);
                navigationnode.Delete(menuItem);

                int menuItemId = 0;
               navigationnode.Delete(navigationnode[0]);

(未完)