更新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’信息。