我正在使用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值并执行的新项目......
任何想法,这有什么问题?
答案 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;
}
}