首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SharePoint 2010中设置SPField的内部名称?

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

Stack Overflow用户
提问于 2011-11-08 23:58:40
回答 2查看 8.5K关注 0票数 5

我以编程方式将字段添加到列表中。下面的行将一个新字段添加到现有列表中

代码语言:javascript
复制
Lists.AddFieldToList(warrantyList, SPFieldType.Text, "internalFieldName", "ShownFieldName", "Comment", false, false, false);                    

这是调用的方法:

代码语言:javascript
复制
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“的标题。

在第二行中,调用了以下方法:

代码语言:javascript
复制
  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:我该如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-09 04:09:36

此行创建一个SPField对象,该对象可能具有您需要的内部名称(传递给constructordisplayName等于fieldInternalName):

代码语言:javascript
复制
SPField field = new SPField(list.ParentWeb.Fields, fieldType.ToString(), fieldInternalName);

但是,在将任何内容保存到数据库之前,需要在下面这一行中更改它:

代码语言:javascript
复制
field.Title = fieldDisplayName;

以下是解决方案:

  1. 将字段添加到列表中,同时将internalFieldName作为fieldInternalNamefieldDisplayName.
  2. Call internalFieldName方法传递。
  3. 从列表中获取字段引用,并将其Title属性更改为SPField.Update()方法。
票数 6
EN

Stack Overflow用户

发布于 2011-11-09 05:15:06

从SharePoint 2007开始,他们在SharePoint中就有了一个方法AddFieldAsXml。如果这样做,您就可以更好地控制添加字段的方式。请参阅上面链接中的示例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8053296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档