更新SPItem时出现SPE异常
本文关键字:SPE 异常 SPItem 更新 | 更新日期: 2023-09-27 18:20:36
我正在使用VisualStudio 2013 Premium为SharePoint 2010编写代码我在Web部件中创建了一个buttonclick事件,它应该更新列表中现有的项目。。。但在我按下这个按钮的那一刻,我得到了用户代码未处理的异常。。
这是我创建的一段代码:
void myButton_Click(object sender, RoutedEventArgs e)
{
SPList list = SPContext.Current.Web.GetList["MyList"];
SPItem item = list.GetItemById(myId);
item["MyField"] = newValue;
item.Update;
}
同时,我尝试不更新,而是创建一个具有相同字段值的新项,并执行。。。
有什么想法吗,这个有什么问题?
我想,你会得到一个错误,因为SPItem
是一个抽象类,在从列表中获取特定项时,你肯定应该使用SPListItem
类。这可能是印刷错误,但Update
是一种方法,所以您的代码应该是这样的:
SPListItem item = list.GetItemById(myId);
item["MyField"] = newValue;
item.Update();
问题看起来像是,您没有编写正确的列表名称或字段名称。
请确保您没有更新ID字段。你能说出你得到异常的确切位置吗?
尝试从当前上下文创建新的站点和web实例,并将其AllowUnsafeUpdates设置为true,如下所示:
using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
using (SPWeb web = site.OpenWeb())
{
site.AllowUnsafeUpdates = true;
web.AllowUnsafeUpdates = true;
SPList list = web.GetList["MyList"];
SPListItem item = list.GetItemById(myId);
item["MyField"] = newValue;
item.Update();
web.AllowUnsafeUpdates = false;
site.AllowUnsafeUpdates = false;
}
}