2012-04-11 5 views
4

Ich möchte alle Links in einem QuickLaunch in SP2010 mit C# löschen. Ich tought dies wird es tun, aber irgendwie sind sie werde nicht gelöscht:Alle Links von Quicklaunch löschen?

 SPNavigationNodeCollection n = subSite.Navigation.QuickLaunch; 

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

Im fähig, Links hinzufügen, aber nicht, sie zu löschen:/Irgendwelche Ideen? Thx

Edit: Ah bekam das Update :)

Ich kann nicht schreiben Sie einfach node.Delete() Ich brauche n.Delete(node)

EDIT2 schreiben: hm irgendwie nicht, daß ich gelöscht alle Links bekommen. Wenn ich den Code 2-3mal dann alle von ihnen laufen, werden gelöscht, seltsam

+0

Was meinst du mit "nicht in der Lage zu löschen". Wird eine Ausnahme ausgelöst? Erhalten Sie einen Fehler? Bleiben sie einfach an ihrem Platz? –

+0

Bleib am Platz ... – sabisabi

Antwort

12

diesen Code Versuchen:

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

diesen Link siehe auch: http://www.mtelligent.com/journal/2007/10/7/customizing-the-quick-launch-menu-with-spnavigationnode-spna.html

+1

Irgendwie ist dein Code besser, weil er wirklich alle Links löscht. Und meine Foreach möchte nicht alle von ihnen in der ersten Runde löschen. Ich verstehe es nicht, warum? Es ist der gleiche Code nur mit foreach und ich habe foreach immer besser. – sabisabi

+0

für weitere Informationen überprüfen Sie die URL: http://www.mtelligent.com/journal/2007/10/7/customizing-the-quick-launch-menu-with-spnavigationnode-spna.html –

1

Sie die Sammlung von den letzten zu verarbeiten haben zu erst, weil, wenn Sie es zuerst dauern wie mit foreach Sie ändern die Sammlung beim Löschen von Elementen, Iteration

5

Ich habe das gleiche Problem selbst erlebt.

Ich konnte die Links auf dem Schnellstart löschen, indem Sie von unten nach oben löschten. Meine Theorie ist, dass die Sammlung nach dem Löschen eines Links im Schnellstart verschoben wird. Wenn also Link [0] gelöscht wird, wird Link [1] zum Link [0]. Beim Versuch, den Link [1] zu löschen, wird der Link [2] gelöscht.

Ihr Problem ist, dass Link [i] nicht existiert und Fehler 'kann diese Aktion nicht abschließen' wird ausgelöst, aber Sie haben nicht alle Links gelöscht.

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

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

sollte dies auch

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