簡體   English   中英

如何在 SharePoint 2010 中設置 SPField 的內部名稱?

[英]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;

這是解決方案:

  1. 向列表中添加一個字段,將internalFieldName作為fieldInternalNamefieldDisplayName
  2. 調用SPList.Update()方法。
  3. 從列表中獲取字段引用並將其Title屬性更改為ShownFieldName
  4. 調用SPField.Update()方法。

自 SharePoint 2007 以來,他們在 SharePoint 中有一個AddFieldAsXml方法。如果這樣做,您可以更好地控制添加字段的方式。 請參閱上面鏈接中的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM