更新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时出现SPE异常

我想,你会得到一个错误,因为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;
    }
}