Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我是否可以删除Sharepoint列表,然后使用相同的GUID重新创建它?_C#_Xml_Sharepoint - Fatal编程技术网

C# 我是否可以删除Sharepoint列表,然后使用相同的GUID重新创建它?

C# 我是否可以删除Sharepoint列表,然后使用相同的GUID重新创建它?,c#,xml,sharepoint,C#,Xml,Sharepoint,我正在尝试使用Sharepoint Web服务引用创建一个C#程序,该程序将每天接受用户输入并更新列表。数据每天都可能不同,因此我需要一种可靠的方法来删除列表中的每一项,然后再为新项发送update语句 删除条目的唯一方法是引用其条目ID号。我试着创建一个循环,生成一个覆盖ID 1-50的delete语句,但是由于列表总是递增,所以只有在50个项目通过时才会生效。在我的谷歌搜索中,我发现将列表重置为ID 1的唯一方法是删除它并重新创建它。不幸的是,如果我这样做,它将有一个不同的GUID,我的程序

我正在尝试使用Sharepoint Web服务引用创建一个C#程序,该程序将每天接受用户输入并更新列表。数据每天都可能不同,因此我需要一种可靠的方法来删除列表中的每一项,然后再为新项发送update语句

删除条目的唯一方法是引用其条目ID号。我试着创建一个循环,生成一个覆盖ID 1-50的delete语句,但是由于列表总是递增,所以只有在50个项目通过时才会生效。在我的谷歌搜索中,我发现将列表重置为ID 1的唯一方法是删除它并重新创建它。不幸的是,如果我这样做,它将有一个不同的GUID,我的程序将不再能够调用它的下一次运行


有什么解决方案我没有看到吗?

您不能用指定的GUID重新创建列表

但是从您的评论来看,如果您需要将ID重置为1的唯一原因是帮助您完成空列表操作,那么您在这里就偏离了正切

从返回的XML的格式为

<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>
更多灵感请参见此图

进一步—要通过一次调用删除所有这些记录,您可以通过在上面的for循环中构建一个类似这样的XML片段来发送,从而执行批处理更新

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

100
101
注释

  • “方法ID='XXX'…”必须是 对于每个批次方法,顺序+1
  • “字段名='ID'100…”匹配 您在中找到的列表的ID 对于上面的循环

我是否正确理解您需要一种从SharePoint列表中删除所有项目的方法?正确。我使用的是web服务,所以除非您有一种从GetListItems()解析XML的好方法,foreach不会剪切它。您是否考虑删除列表中的所有项目,因为您不想费劲地弄清楚每个项目是否已更改?您不能按名称而不是GUID引用列表吗?Tundey-项目可能每天都不同;整个列表可能完全不同,并且项目的数量也不同。不幸的是,每次运行时,我都必须清除列表。如果我尝试按名称引用,我只会得到“Guid应该包含32个数字和4个破折号”。我对C#还是相当陌生,不知道如何从GetListItems()解析XML。我不知道getAttribute可以为我做这件事。我会试试看,然后回来报告-谢谢!
<Batch>
   <Method ID='1' Cmd='Delete'><Field Name='ID'>100</Field></Method>
   <Method ID='2' Cmd='Delete'><Field Name='ID'>101</Field></Method>
</Batch>