更新Sharepoint列表项

我收到了以下错误…

System.NullReferenceException:未将对象引用设置为对象的实例。 在Program.cs中的ConsoleApplication1.Program.Main(String [] args)的Microsoft.SharePoint.SPListItem.get_UniqueId()处:第21行

运行以下代码

using (SPSite site = new SPSite("http://site/")) { using (SPWeb web = site.OpenWeb()) { try { SPList list = web.Lists["ListName"]; // 2 SPListItem item = list.Items.Add(); Guid itemId = item.UniqueId; SPListItem itemUpdate = web.Lists["ListName"].Items[itemId]; itemUpdate["PercentComplete"] = .45; // 45% itemUpdate.Update(); } catch (Exception e) { Console.WriteLine(e); Console.ReadLine(); } } } 

有什么问题?

如果您正在尝试更改刚刚插入的列表项的值,则应该使用:

 SPList list = web.Lists["ListName"]; //SPListItem item = list.Items.Add(); //item["PercentComplete"] = .45; // 45% //item.Update(); SPListItemCollection items = list.GetItems(new SPQuery() { Query = @"   Desigining  " }); foreach (SPListItem item in items) { item["PercentComplete"] = .45; // 45% item.Update(); } 

您只需要使用list.Items[uniqueId]或更快的list.GetItemByUniqueId(uniqueId)如果您需要查找要更新的特定项目; 使用SPQuery类可以实现什么。

鲁本的答案是正确的但是得到的错误很少(可能只是对我来说)因此我稍微调整一下然后它工作正常。 下面是我使用的代码,如果有人需要它

  SPList list = web.Lists["ListName"]; //SPListItem item = list.Items.Add(); //item["PercentComplete"] = .45; // 45%//item.Update(); SPQuery oQuery = new SPQuery(); oQuery.Query = @"   Design  "; SPListItemCollection collListItems = list.GetItems(oQuery); foreach (SPListItem item in collListItems) { item["PercentComplete"] = .55; item.Update();} 

在获取UniqueID之前,尝试在列表上调用Update()

  SPList list = web.Lists["ListName"]; // 2 SPListItem item = list.Items.Add(); item["Title"] = "Test"; item.Update (); list.Update (); Guid itemId = item.UniqueId; 

我最好的问题是,当您执行以下操作时,您的项目尚未在列表中创建:

 Guid itemId = item.UniqueId; SPListItem itemUpdate = web.Lists["ListName"].Items[itemId]; 

首先在请求uniqueId和/或从列表中获取项目之前执行item.Update()。

PS:我认为你没有理由得到第二个SPItem对象来更新’PercentComplete’信息。