2014-09-03 41 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; 
    } 
} 
相關問題