SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




item.delete Funktion hängt sich auf

Unbeantwortet Dieser Beitrag hat 2 Antworten

Ohne Rang
53 Beiträge
Jan D erstellt 22 Sept. 2010 13:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Sharepointuser,

folgenden MSDN Code  habe ich abgeändert, um eine Liste komplett zu löschen:

 

SPWeb mySite = SPContext.Current.Web;
  SPListItemCollection listItems = mySite.Lists["der_name_meiner_liste"].Items;
int itemCount = listItems.Count;

for (int k = 0; k < itemCount; k++)
{
SPListItem item = listItems[k];
listItems.Delete(k);
}

 

Den Orginalcode gibt es hier: 
http://msdn.microsoft.com/en-us/library/ms467435.aspx

 

Was passiert:

 Item.Count wird richtig zugewiesen. Nach genau der Hälfte aller Durchläufe erhalte ich dann eine ArgumentOutOfRangeException mit der Begründung "Das angegebene Argument liegt außerhalb des gültigen Wertebereichs."

Das bedeutet konkret, dass pro Aufruf immer die Hälfte aller Einträge gelöscht werden, bis der Debugger den oben beschriebenen Error anzeigt. Dieses Procedere kann man dann beliebig oft wiederholen, bis dann nur noch 1 Zeile in der Liste übrig ist.

 

Hat vielleicht jemand eine Idee, woran das liegt?

 

Mit besten Grüßen

Jan

 

P.S.

Ich hoffe, ich habe meinen Post im richtigen Forum abgelegt - wenn nicht wäre ein kurzer Hinweis sehr freundlich, damit ich beim nächsten mal Klüger bin.

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 22 Sept. 2010 14:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das ist ein beliebter Anfängerfehler, der nichtmal mit SharePoint zu tun hat ;-)

Du hast eine Schleife for (int k=0; k<itemCount; k++) in der die Elemente gelöscht werden. Du zählst dabei k von Null nach oben. Genau nach der Hälfte ist k also größer, als die Anzahl der Elemente (die sich ja verringert hat) und Du bekommst keines mehr.

Zähle einfach die Schleife von oben nach unten:
for (k=itemCount-1; k>=0; k--)

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
53 Beiträge
Jan D Als Antwort am 22 Sept. 2010 15:35
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Funktioniert

 

Vielen Dank!