从快速发布中删除所有链接?

时间:2012-04-11 09:26:19

标签: c# .net sharepoint sharepoint-2010

我想用C#删除SP2010中快速启动的所有链接。我认为这样做会,但不知怎的,他们不会被删除:

        SPNavigationNodeCollection n = subSite.Navigation.QuickLaunch;

        foreach (SPNavigationNode node in n)
        {
            node.Delete();
        }

我能够添加链接,但不能删除它们:/任何想法? THX

编辑:啊得到了修复:)

我不能只写node.Delete()我需要写n.Delete(node)

Edit2:hm不知何故我没有删除所有的链接。如果我运行代码2-3次,那么所有这些都被删除,很奇怪

4 个答案:

答案 0 :(得分:12)

试试这段代码:

 SPNavigationNodeCollection nodes = web.Navigation.QuickLaunch;
 for(int i = nodes.Count - 1; i >= 0; i--)
            {
                nodes[i].Delete();
            }

另请参阅此链接:http://www.mtelligent.com/journal/2007/10/7/customizing-the-quick-launch-menu-with-spnavigationnode-spna.html

答案 1 :(得分:5)

我自己也经历过同样的问题。

我可以通过自下而上的删除删除快速启动上的链接。我的理论是在快速启动时删除链接后向上移动了集合,因此当链接[0]被删除时,链接[1]变为链接[0]。然后,当尝试删除链接[1]时,链接[2]实际上被删除。

您的问题是,在某些时候,链接[i]不存在且错误“无法完成此操作”,但您尚未删除所有链接。

//Iterate from the bottom of the links to the top

for (i = numLinks-1; i >=0 ; i--)
{
    links[i].Delete();
}

答案 2 :(得分:1)

你必须从最后到第一个处理集合,因为如果你像foreach那样首先执行它,那么你在从中删除项目时会更改集合,搞乱迭代

答案 3 :(得分:1)

这也应该有用

 SPNavigationNodeCollection nodes = web.Navigation.QuickLaunch;
 while (nodes.Count > 0)
 {
    nodes[0].Delete();
 }