2015-05-18 87 views
0

我試圖在SharePoint中更新多個字段(具有相同名稱)上的一些屬性。以編程方式更新SharePoint中的多個字段

我已經試過這樣:

var site = this.Site.RootWeb; 
var fields = site.Fields; 

     foreach (SPField field in fields) 
     { 
      if (field.Group.Contains("My Custom Columns")) 
      { 
       if (field.Title.Contains("Custom field")) 
       { 
        if (field.DefaultValue != null) { 
         field.DefaultValue = null; 
         field.Update(true); 
        }      
       } 
      } 
     } 

它更新一個名爲「自定義字段」的第一列,但它給我這個錯誤後:

Collection was modified; enumeration operation may not execute. 
at Microsoft.SharePoint.SPBaseCollection.SPEnumerator.System.Collections.IEnumerator.MoveNext() 

它是不可能的更新foreach循環中的對象?

回答

0

我相信這個問題是你的

foreach (SPField field in fields) 

行代碼。您基本上正在修改您正在循環的集合。

我會建議你嘗試是循環並獲得所有字段的ID在一個

List<GUID> 

然後做這個集合讓每個字段和更新它的值foreach語句。

List<Guid> guidsList = new List<guid>(); 
foreach (SPField field in fields) 
    { 
     if (field.Group.Contains("My Custom Columns")) 
     { 
      if (field.Title.Contains("Custom field")) 
      { 
guidsList.add(field.id) 

      } 
     } 
    } 

foreach(Guid currentFieldId in guidsList){ 
//Get your field 
//Update what needs to be updated 
} 

非常感謝

Truez

+0

謝謝你,偉大工程。 – Robin

1

,因爲你想在迭代它來修改字段集合時出現此錯誤。

解決辦法是更換線路:

foreach (SPField field in fields) 

foreach (var field in fields.Cast<SPField>().ToList()) 
相關問題