将ListItem添加到Sharepoint 2007中的列表

时间:2010-10-01 06:28:51

标签: sharepoint sharepoint-2007 caml

我正在尝试将项目添加到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中的列表以确保它在那里。

2 个答案:

答案 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个字段(标题)的子网,只是为了让它正常工作。