Могу ли я удалить список Sharepoint List, а затем воссоздать его с тем же GUID? - PullRequest
1 голос
/ 07 января 2011

Я пытаюсь создать программу на C #, используя ссылку на веб-службу Sharepoint, которая будет принимать пользовательский ввод каждый день и обновлять список.Данные могут каждый день меняться, поэтому мне нужен надежный способ удаления каждого элемента в списке перед отправкой оператора обновления для новых элементов.

Единственный способ удалить запись - сослаться на идентификатор элементачисло.Я попытался просто создать цикл, который будет генерировать оператор удаления, который содержит идентификатор 1-50, но поскольку список всегда увеличивается, он работает только до тех пор, пока не пройдут 50 элементов.В моем поиске я обнаружил, что единственный способ сбросить список с идентификатором 1 - это удалить его и воссоздать.К сожалению, если я это сделаю, у него будет другой GUID, и моя программа больше не сможет вызывать его при следующем запуске.

Есть ли какое-то решение, которого я здесь не вижу?

1 Ответ

3 голосов
/ 07 января 2011

Вы не можете воссоздать список с указанным идентификатором GUID.

Но из вашего комментария вы тут не согласны, если единственная причина, по которой вам нужно сбросить идентификатор на 1, это помочьс вашей пустой операцией со списком.

XML, возвращенный из GetListItems () , имеет формат

<listitems xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" 
   xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" 
   xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" 
   xmlns="http://schemas.microsoft.com/sharepoint/soap/">
   <rs:data ItemCount="4">
      <z:row ows_Number_Field="6555.00000000000" 
         ows_Created="2003-06-18T03:41:09Z" 
         ows_ID="100" ows_owshiddenversion="3" />
      <z:row ows_Number_Field="78905456.0000000" 
         ows_Created="2003-06-18T17:15:58Z" 
         ows_ID="101" ows_owshiddenversion="2" />
         ...
   </rs:data>
</listitems>

Так что «надежно» проходить через это что-то вроде(не проверено, но вы поняли)

// Call GetListItems and setup XmlDocument with results
System.Xml.XmlNode nodeListItems = 
    listService.GetListItems
    (listName, viewName,query,viewFields,rowLimit,queryOptions,null);

/*Loop through each node in the XML response and display each item.*/
foreach (System.Xml.XmlNode listItem in nodeListItems)
{
   Console.WriteLine("ID:{0}",listItem.getAttribute("ows_ID"));
}

См. эту статью MSDN для получения дополнительной информации

Далее - удалить все эти записи одним вызовом, который вы можете сделатьпакетное обновление, отправив UpdateListItems путем создания фрагмента XML, например, в приведенном выше цикле for.

<Batch>
   <Method ID='1' Cmd='Delete'><Field Name='ID'>100</Field></Method>
   <Method ID='2' Cmd='Delete'><Field Name='ID'>101</Field></Method>
</Batch>

Notes

  • "ID метода"= 'XXX' ... "должно быть последовательно +1 для каждого пакетного метода.
  • " Имя поля = 'ID'100 ... "соответствует идентификаторам списка, который вы нашли в цикле forвыше.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...