2011-11-08 71 views
5

我字段添加到列表programmaticly。下面的代碼行增加了一個新的field'to現有列表如何在SharePoint 2010中設置SPField的內部名稱?

Lists.AddFieldToList(warrantyList, SPFieldType.Text, "internalFieldName", "ShownFieldName", "Comment", false, false, false);      

這是調用的方法:該方法的第一線現場充滿了很多資料後

public static bool AddFieldToList(SPList list, SPFieldType fieldType, string fieldInternalName, string fieldDisplayName, string fieldDescription, bool unique, bool required, bool indexed) 
    { 
     SPField field = new SPField(list.ParentWeb.Fields, fieldType.ToString(), fieldInternalName);    
     bool success = AddFieldToList(list, field, fieldDisplayName, fieldDescription, unique, required, indexed); 
     return success; 
    } 

,但沒有內部名稱(NULL)和包含「internalFieldName」的標題。

在第二行下面的方法被稱爲:

public static bool AddFieldToList(SPList list, SPField field, string fieldDisplayName, string fieldDescription, bool unique, bool required, bool indexed) 
    { 
     if (field != null && 
      (!list.Fields.Contains(field.Id))) 
     { 

      field.ReadOnlyField = false; 
      field.Title = fieldDisplayName; 
      field.Description = fieldDescription; 
      field.EnforceUniqueValues = unique; 
      field.Indexed = indexed; 
      field.Required = required; 
      list.Fields.Add(field); 
      return true; 
     } 

     return false; 
    } 

之後的標題變爲「ShownFieldName」(當然)。但我的目標是擁有一個內部名稱「internalFieldName」,它具有DisplayName「ShownFieldName」,所以「ShownFieldName」顯示在列表中,但我可以通過內部名稱訪問該項目

as field.InternalName is readOnly:How我可以解決這個問題嗎?

回答

6

這行創建一個SPField對象,可能有你需要的內部名稱(傳遞給constructordisplayName等於fieldInternalName):

SPField field = new SPField(list.ParentWeb.Fields, fieldType.ToString(), fieldInternalName); 

的事情之前已經保存到數據庫你改變它在這條線:

field.Title = fieldDisplayName; 

這裏的解決方案:

  1. 一個字段添加到通過internalFieldName既是fieldInternalNamefieldDisplayName列表。
  2. 調用SPList.Update()方法。
  3. 獲取列表中的字段引用和Title屬性更改爲ShownFieldName
  4. 調用SPField.Update()方法。
+0

感謝,馬雷克。工作。 –

2

他們有一個方法AddFieldAsXml在SharePoint自2007年的SharePoint如果你這樣做,你忘記你是如何將字段添加更多的控制。在上面的鏈接中查看示例。再次

+0

我知道的方法,但更喜歡用「真實」的對象,而不是建立字符串編程。 –

相關問題