繁体   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