2

I need to delete all the items present in the list view on the click of the "delete all" action button.

enter image description here I am running the script -

foreach($selectedItem in $allData) {    
   $item = Get-Item -Path "master:" -ID $selectedItem.ID
   $item | Remove-Item
   $allData.Remove($selectedItem) 
}

But it deletes only the first item in the list. Maybe it is throwing some error in $allData.Remove($selectedItem). When I try to execute it in ISE with test data in $allData, it throws below error:

Exception calling "Remove" with "1" argument(s): "Collection was of a fixed size."

Please suggest how to resolve this?

3
  • why do you want to remove item from $allData? are you doing anything with it? Commented Oct 15, 2019 at 7:45
  • @MahendraShekhawat Based on previous question at sitecore.stackexchange.com/q/22542/605, it seems that he wants to update the listview Commented Oct 15, 2019 at 8:05
  • @Surya I went on with Mahendra Shekhawat's comment and didn't update $allData. Instead, showed a popup that all the items are deleted and closed the window.
    – NewbieHere
    Commented Oct 18, 2019 at 10:17

1 Answer 1

1

You can try for loop instead of foreach loop if you want to update collection within the loop

Example -

for($index = $allData.Count-1; $index -ge 0; $index--) {
   $item = Get-Item -Path "master:" -ID $allData[$index].ID
   $item | Remove-Item
   $allData.RemoveAt($index) 
}

If $allData is a collection of items then below script is enough to remove items and update $allData collection -

for($index = $allData.Count-1; $index -ge 0; $index--) {
   $allData[$index] | Remove-Item
   $allData.RemoveAt($index) 
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.