[英]How to set the internal name for a SPField in SharePoint 2010?
我以編程方式將字段添加到列表中。 以下行向現有列表添加一個新字段
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;
}
在方法的第一行之后,該字段填充了大量信息,但沒有 internalName(NULL) 和包含“internalFieldName”的 Title。
在第二行中,調用了以下方法:
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”,它有一個顯示名稱“ShownFieldName”,所以“ShownFieldName”顯示在列表中,但我可以通過內部名稱訪問該項目
因為 field.InternalName 是只讀的:我該如何解決這個問題?
此行創建一個SPField
對象, SPField
對象可能具有您需要的內部名稱( displayName
傳遞給構造函數等於fieldInternalName ):
SPField field = new SPField(list.ParentWeb.Fields, fieldType.ToString(), fieldInternalName);
但是在將任何內容保存到數據庫之前,您可以在此行中對其進行更改:
field.Title = fieldDisplayName;
這是解決方案:
fieldInternalName
和fieldDisplayName
。SPList.Update()
方法。Title
屬性更改為ShownFieldName 。SPField.Update()
方法。自 SharePoint 2007 以來,他們在 SharePoint 中有一個AddFieldAsXml
方法。如果這樣做,您可以更好地控制添加字段的方式。 請參閱上面鏈接中的示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.