zoukankan      html  css  js  c++  java
  • 如何让SiteMapPath动态添加节点,修改,删除

    首先你要写好Web.sitemap,写好后你要修改SiteMapPath的前面前台(.aspx)只需要有个有SiteMapPath控件就可以了。关键就看后台(.cs)代码了:1、增加:protected void Page_Load(object sender, EventArgs e)
    {
    //在Page_Load中注册SiteMapResolve事件给SiteMap_SiteMapResolve方法以添加节点
    SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve);
    }private SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
    {
    SiteMapNode currentNode = null; if (SiteMap.CurrentNode != null)
    {
    currentNode = SiteMap.CurrentNode.Clone(true); SiteMapNodeCollection childNodes = new SiteMapNodeCollection(); SiteMapNode newNode = new SiteMapNode(e.Provider, "newNode", "OthrePage.aspx", "新的节点");
    newNode.ParentNode = currentNode;
    childNodes.Add(newNode);
    currentNode.ChildNodes = childNodes; currentNode = newNode;
    }
    return currentNode;
    } 2、删除:protected void Page_Load(object sender, EventArgs e)
    {
    //在Page_Load中注册SiteMapResolve事件给SiteMap_SiteMapRemove方法以删除节点
    SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(this.SiteMap_SiteMapRemove);
    }private SiteMapNode SiteMap_SiteMapRemove(object sender, SiteMapResolveEventArgs e)
    {
    SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true); if (currentNode.Key.EndsWith("PostEditor.aspx".ToLower()))
    {
    //currentNode 为"回复文章"的上一层"动态修改SiteMpaPath路径"
    currentNode = currentNode.ParentNode;
    currentNode.ChildNodes.Clear();
    }
    return currentNode;
    }3、修改: protected void Page_Load(object sender, EventArgs e)
    {
    //在Page_Load中注册SiteMapResolve事件给ModifyPath方法以修改当前结点和父结点
    SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(this.ModifyPath);
    }private SiteMapNode ModifyPath(object sender, SiteMapResolveEventArgs e)
    {
    SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
    SiteMapNode modifyNode = currentNode;

    modifyNode.Url = " http://www.bbb.net";
    modifyNode.Title = "修改当前结点";
    modifyNode.Description = "对当前结点的描述,鼠标提示信息";

    if ( (modifyNode = modifyNode.ParentNode) != null)
    {
    modifyNode.Url = " http://www.aaa.net";
    modifyNode.Title = "修改父结点";
    }

    return currentNode;

    }这就大功告成了!添删改时会有一段时间才会看到效果(缓存)
    经验在于积累----武二郎
  • 相关阅读:
    第三百九十一、二、三、四、五、六、七天 how can I 坚持
    第三百九十天 how can I 坚持
    第三百八十九天 how can I 坚持
    POJ 1745:Divisibility 枚举某一状态的DP
    POJ 1502:MPI Maelstrom Dijkstra模板题
    POJ 1160:Post Office 邮局经典DP
    POJ 1062:昂贵的聘礼
    POJ 1125:Stockbroker Grapevine
    POJ 1236:Network of Schools
    POJ 2186:Popular Cows Tarjan模板题
  • 原文地址:https://www.cnblogs.com/zhanghai/p/4461233.html
Copyright © 2011-2022 走看看