使用客户端对象模型在Sharepoint C#中创建ListItem

时间:2017-09-12 22:35:59

标签: c# sharepoint

我是这个主题的新手,但在我在这里问之前,我经常搜索很多。所以我的问题是,当我在我的应用程序中创建ListItem并设置所需的字段时,一切看起来都很正常。如果我去Sharepoint Online,我可以在列表中看到ListItem和正确的字段。但是,当我单击ListItem时,Fields为空,并且在页面顶部是一个错误,其中显示“对象引用未设置为对象的实例”。我不知道问题是否发生在我的代码中,或者Sharepoint设置是否存在问题?我跟着这里的大部分导游走到了现在。我的代码如下。

        SP.List targetList = ctx.Web.Lists.GetByTitle("Documents");

        ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
        ListItem newListItem = targetList.AddItem(itemCreateInfo);

        newListItem["Title"] = "Test_title";
        newListItem["EAN_x0020_k_x00f3_d"] = "AnotherCodeWhichIsRequired";
        newListItem.Update();

        string strFilePath = @"PathToMyPDF";

        byte[] bytes = System.IO.File.ReadAllBytes(strFilePath);

        using (System.IO.MemoryStream mStream = new System.IO.MemoryStream(bytes))
        {
            SP.AttachmentCreationInformation aci = new SP.AttachmentCreationInformation();
            aci.ContentStream = mStream;
            aci.FileName = System.IO.Path.GetFileNameWithoutExtension(strFilePath);

            newListItem.AttachmentFiles.Add(aci);

            newListItem.Update();
            ctx.ExecuteQuery();
        }

1 个答案:

答案 0 :(得分:0)

看起来您正在使用文档库。您使用的代码是用于共享点列表。

要将文件上传到文档库并更新其属性,请按以下步骤修改代码:

string strFilePath = @"PathToMyPDF";
FileCreationInformation newFile = new FileCreationInformation();  
newFile.Content = System.IO.File.ReadAllBytes(strFilePath);  
newFile.Overwrite = true;
SP.List targetList = ctx.Web.Lists.GetByTitle("Documents");  
Microsoft.SharePoint.Client.File uploadFile = targetList.RootFolder.Files.Add(newFile);  
ctx.Load(uploadFile);  
ctx.ExecuteQuery();  

uploadFile.ListItemAllFields["Title"] = "Test_title";
uploadFile.ListItemAllFields["EAN_x0020_k_x00f3_d"] = "AnotherCodeWhichIsRequired";
uploadFile.ListItemAllFields.Update();

ctx.ExecuteQuery();