4

SP2010 で C# を使用してクイック起動ですべてのリンクを削除したいと考えています。これでうまくいくと思いましたが、どういうわけかそれらは削除されません:

        SPNavigationNodeCollection n = subSite.Navigation.QuickLaunch;

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

リンクを追加することはできますが、削除することはできません:/ 何かアイデアはありますか? どうも

編集:ああ、修正しました:)

node.Delete()書く必要があるだけで書けないn.Delete(node)

Edit2: うーん、どういうわけか、すべてのリンクが削除されません。コードを 2 ~ 3 回実行すると、すべてが削除されます。

4

4 に答える 4

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

于 2012-04-11T13:39:26.043 に答える
5

私自身も同じ問題を経験しました。

クイック起動時に下から上に削除することでリンクを削除することができました。私の理論では、クイック起動時にリンクを削除するとコレクションが上にシフトするため、link [0]が削除されると、link[1]はlink[0]になります。次に、link [1]を削除しようとすると、link[2]が実際に削除されます。

問題は、ある時点でlink [i]が存在せず、エラー「このアクションを完了できません」がスローされますが、すべてのリンクを削除していないことです。

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

for (i = numLinks-1; i >=0 ; i--)
{
    links[i].Delete();
}
于 2012-10-23T14:00:11.090 に答える
1

コレクションを最後から最初に処理する必要があります。これは、 foreach のように最初から最後まで処理すると、コレクションからアイテムを削除するときにコレクションが変更され、反復が台無しになるためです。

于 2012-04-17T18:23:38.543 に答える