2012-04-11 12 views
4

C#でSP2010のクイックスタートですべてのリンクを削除したいと思います。私は、これはそれを行います取り払わ、何とか彼らは削除つもりはありません。quicklaunchからすべてのリンクを削除しますか?

 SPNavigationNodeCollection n = subSite.Navigation.QuickLaunch; 

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

のリンクを追加して、それらを削除しないことイム:/任意のアイデア? THX

編集:ああは修正を得た:)

私はn.Delete(node)

EDIT2を書くために必要なだけのnode.Delete()を書き込むことはできません:HM何とか私はすべてのリンクを削除されますいけません。私は、コード2-3回実行した場合、それらのすべてが削除されている、変な

+0

あなたが "削除することはできない" とは何を意味するかを動作するはずです。例外がスローされますか?間違いはありますか?彼らはちょうどその場にいますか? –

+0

ここに留まる... – sabisabi

答えて

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

どういうわけか、あなたのコードは本当にすべてのリンクを削除しているので、より良いです。そして私のforeachは最初のラウンドでそれらのすべてを削除したくないです。私はそれを得ない、なぜ? foreachと同じコードとforeachを使うのは常に良いです。 – sabisabi

+0

詳細については、URLを確認してください: http://www.mtelligent.com/journal/2007/10/7/customizing-the-quick-launch-menu-with-spnavigationnode-spna.html –

1

あなたが最後のコレクションを処理する必要が最初にforeachと同じように最後に行うと、アイテムを削除するときにコレクションを変更しているので、反復を混乱させるからです。

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(); 
} 
1

これも

SPNavigationNodeCollection nodes = web.Navigation.QuickLaunch; 
while (nodes.Count > 0) 
{ 
    nodes[0].Delete(); 
} 
関連する問題