更新SPItem时的SPException

时间:2014-09-03 05:03:02

标签: c# exception sharepoint updating

我正在使用VisualStudio 2013 Premium为SharePoint 2010编写代码 我在webpart中创建了一个buttonclick事件,该事件应该更新列表中的一个现有项目...但是,此时我按下此按钮,我得到的spexception未被用户代码处理..

这是我创建的一段代码:

void myButton_Click(object sender, RoutedEventArgs e)
{
    SPList list = SPContext.Current.Web.GetList["MyList"];
    SPItem item = list.GetItemById(myId);

    item["MyField"] = newValue;
    item.Update;
}

同时我尝试不更新,但是要创建一个具有相同Field值并执行的新项目......

任何想法,这有什么问题?

3 个答案:

答案 0 :(得分:2)

我想,你得到一个错误,因为SPItem是一个抽象类,当从列表中获取特定项时,你肯定应该使用SPListItem类。而且,可能这是一个错误打印,但Update是一种方法,因此您的代码应如下所示:

SPListItem item = list.GetItemById(myId); 
item["MyField"] = newValue;
item.Update();

答案 1 :(得分:0)

问题看来,您还没有写出正确的列表名称或字段名称。

请确保您没有更新ID字段。你能告诉你获得例外的确切位置吗?

答案 2 :(得分:0)

尝试从当前上下文创建新的站点和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;
    }
}