我正在尝试将项目添加到Sharepoint中的列表中。目前我正在尝试通过CAML添加项目
我可以阅读列表,查询列表但我无法添加到列表中。我看到的所有示例都更新了列表,我希望它应该是一个相当类似的过程来添加项目。
这就是我目前正在测试它的方式。 SPLists是对http:///_vti_bin/lists.asmx
的Web引用 void Test(){
var listService = new SPLists.Lists();
string strBatch ="<Method ID='1' Cmd='New'><Field Name='Title'>Test</Field></Method>";
XmlDocument xmlDoc = new System.Xml.XmlDocument();
System.Xml.XmlElement elBatch = xmlDoc.CreateElement("Batch");
elBatch.SetAttribute("OnError", "Continue");
elBatch.SetAttribute("ListVersion", "1");
elBatch.InnerXml = strBatch;
XmlNode ndReturn = listService.UpdateListItems("TestList",elBatch);
Console.Write(ndReturn.OuterXml);
Console.WriteLine("");
}
someone already asked a similar/same question here关于SO但没有回答
修改
这是我得到的错误
<Results xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<Result ID="1,New">
<ErrorCode>0x81020026</ErrorCode>
<ErrorText>The list that is referenced here no longer exists.</ErrorText>
</Result>
</Results>
当我设置Web引用时,将其指向正确的站点,甚至查看sharepoint中的列表以确保它在那里。
答案 0 :(得分:2)
您的strBatch可能需要少量添加(use this article as a reference):<Field Name='ID'>New</Field>
这意味着你会有类似的东西:
string strBatch ="<Method ID='1' Cmd='New'><Field Name='ID'>New</Field><Field Name='Title'>Test</Field></Method>";
此外,如果您的列表中有任何必填字段,您可能还必须指定这些字段。
答案 1 :(得分:0)
这是我发现解决了我的问题。
当我在visual studio中设置Web Reference时,我将其指向http://sharepointSite/subweb1/subweb2/_vit_bin/lists.asmx作为参考。
然而,当我今天回去检查时,它指的是http://sharepointSite/_vit_bin/lists.asmx。在app.config文件中手动将其更改回http://sharepointSite/subweb1/subweb2/_vit_bin/lists.asmx会产生重大影响。
@Kit +1我也在你的建议中添加了。根据您的建议以及我发现的有关Web引用的内容,它首次运行。
我最后只创建了一个只有1个字段(标题)的子网,只是为了让它正常工作。