技术开发 频道

.NET基础之三个导航控件

  动态修改内存中的站点地图

private void Page_Load(object sender, EventArgs e)
   {
      
//首先我们在这里注册一个事件,也就是说在访问CurrentNode属性的时候触发这个事件
       SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve);
   }
   SiteMapNode SiteMap_SiteMapResolve(
object sender, SiteMapResolveEventArgs e)
   {
      
//自定义处理方法获取并创建当前节点的副本,并同时复制他的上级节点
       SiteMapNode CurrentNode = SiteMap.CurrentNode.Clone(true);        
       SiteMapNode TempNode
= CurrentNode;
      
int id = nid();
      
int page = npage();
      
//从下面方法中得到变量

      
if (id > 0)
       {
           TempNode.Url
= TempNode.Url + "?id=" + id.ToString();
       }
      
if (id > 0 && page >= 0)
       {
           TempNode.Url
= TempNode.Url + "&page=" + page.ToString();
       }
      
else if (page >= 0)
       {
           TempNode.Url
= TempNode.Url + "?page=" + page.ToString();
       }
      
return TempNode;
   }

 

  修改当前SiteMap的最后一级显示文字 

protected void SiteMapPath1_ItemCreated(object sender, SiteMapNodeItemEventArgs e)
   {
      
//该用法要求当前节点在站点地图中已经存在,如果无该节点,则会报错
       if (e.Item.ItemType == SiteMapNodeItemType.Current)
       {
           Literal l
= e.Item.Controls[0] as Literal;
          
if (l != null)
          
//temp_lb为string,为想显示的文本。
               l.Text = temp_lb;  
       }
   }

  siteMap控件,默认的主站点地图不得改名,可以存在子站点地图。

  从父站点地图链接到子站点地图
  在父地图中添加一个节点<siteMapNode siteMapFile="~/mysm.sitemap"/>,子地图中的节点都为该节点的子节点。

0
相关文章