2014-09-03 87 views
0

我正在为Visual Studio 2013 Premium编写SharePoint 2010代码 我已经在webpart中创建了一个buttonclick事件,它应该更新列表中现有的项目......但此刻按下此按钮,我得到spexception是由用户代码未处理..更新SPItem时发生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; 
} 

同时我试着不更新,但创建一个新项目相同的字段值,它执行...

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

+0

什么是错误? – Boland 2014-09-04 00:20:16

+0

用户代码未处理spexception – 2014-09-04 17:26:23

+0

请检查ULS日志以获取此异常的确切详细信息。 – Boland 2014-09-05 09:06:53

回答

0

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

请确保您没有更新ID字段。你能准确地知道你在哪里得到异常吗?

+0

我尝试更新'SPBuiltInFieldId .Title'Field – 2014-09-03 07:59:22

+0

我得到一个异常item.Update – 2014-09-05 12:16:55

+0

它只会被猜测,如果你不想给我们从ULS日志中的确切例外... – Boland 2014-09-08 09:12:40

2

我想,你会得到一个错误,因为SPItem是一个抽象类,虽然从列表中获得特定的项目,你绝对应该使用SPListItem类。而且,也许,这是一个错字,但Update是一种方法,让你的代码应该是这样的:

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

不幸的是它不工作太.. 。 – 2014-09-05 12:15:40

0

尝试从当前上下文的网站和网页的新instanse,并设置其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; 
    } 
} 
相关问题