如何在SharePoint 2010中设置SPField的内部名称?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在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;
    }

在方法的第一行之后,字段填充了大量信息,但没有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”,它有一个Displayname“ShownFieldName”,所以“ShownFieldName”显示在列表中,但我可以通过内部名称访问该项目

as field.InternalName是readOnly:我该如何解决这个问题?

答案

这一行创建了一个SPField对象,它可以具有你需要的内部名称(displayName传递给constructor等于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方法。如果这样做,您可以更好地控制添加字段的方式。请参阅上面链接中的示例。

以上是关于如何在SharePoint 2010中设置SPField的内部名称?的主要内容,如果未能解决你的问题,请参考以下文章

在 sharepoint 中设置流式 WCF 服务

powershell 在客户端对象模型的sharepoint中设置文件上载大小

使用来自Sharepoint的电子邮件在rt软件(票务系统)中设置自定义字段

如何在 Visual Studio 2010 中设置环境变量?

如何在 Visual Studio 2010 中设置 Qt 路径?

如何在 Visual Studio 2010 中设置默认编码