当前位置: 首页>>技术问答>>正文


有没有办法查看SPField是否是由用户创建的?

webfans 技术问答 , , , 去评论

问题描述

我有一些代码,我将浏览属于内容类型的所有字段。我很好奇是否有办法检查SPField是由用户创建的,还是系统字段如Created DateTitle

最佳解决方法

这里有两种可能性:

1)您需要确定字段是否完全自定义(由用户从GUI添加到列表中)。您可以使用SourceId属性来实现此目的。您将获得Url,从标准字段的“http://schemas.microsoft.com”开始,以及自定义字段的一些随机GUID。

示例代码:

SPField field = // get your field from a list or content type here
if (!field.SourceId.StartsWith("http://"))
{
   // do your action for completely custom fields
}

2)您需要确定字段是否为non-system。有许多系统字段,通常填充了一些元信息,它们通常在列表管理GUI中隐藏,但它们在内部列表中。您可以将FromBaseType属性用于此目的,对于所有系统字段都是如此。

示例代码:

SPField field = // get your field from a list or content type here
if (!field.FromBaseType)
{
   // do your action for "valuable" fields (non-system)
}

为了进行测试,我在本地SharePoint Portal上从标准联系人列表定义创建了列表”Contacts”。我从GUI到[List settings]添加了“User created column”列。

在此之后,我运行以下PS脚本($ l存储我的SPList对象):

$l.Fields | select StaticName, FromBaseType, SourceId

得到以下结果:

content-type,object-model,spfield,sharepoint

次佳解决方法

Is a given field one of SharePoint’s built in field

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2080.html,转载请务必附带本地址声明。