如何通过c#在SharePoint 2007列表中获取用户创建字段的列表?

本文关键字:列表 创建 用户 字段 获取 SharePoint 2007 何通过 | 更新日期: 2023-09-27 18:17:22

大家好!

<标题> 的背景

我目前有一个c#方法来循环通过SharePoint列表集合并返回这些SP列表的列表,包括它们的列/SPFields的嵌套列表。

<标题>

如何通过c#在SharePoint 2007列表中获得只有用户创建的字段的列表?

目前为止的代码…

SPSite site = SPContext.Current.Site;
        SPWeb web = site.OpenWeb();
        web.AllowUnsafeUpdates = true;
        SPListCollection lists = web.Lists;
        var PellaListCollection = new List<PellaListModel>();
        
        foreach (SPList l in lists) {
                var PellaList = new PellaListModel();
                var PellaListColumns = new List<PellaListColumn>();
                foreach (SPField c in l.Fields) {
                    if (c.Hidden.Equals(false))
                    {
                        var type = c.FieldTypeDefinition.TypeName.ToString();
                        var col = new PellaListColumn
                        {
                            ColumnId = c.Id,
                            ColumnDataType = type,
                            ColumnTitle = c.Title
                        };
                        PellaListColumns.Add(col);
                    }
                }
                PellaList.ListColumns = PellaListColumns;
                PellaList.ListId = l.ID;
                PellaList.ListTitle = l.Title;
                PellaList.Description = l.Description;
                PellaListCollection.Add(PellaList);
        }
        
        web.AllowUnsafeUpdates = false;
        return PellaListCollection;
    }

正如你所看到的,现在我正在筛选哪些SPFields不是"隐藏"的,但这仍然返回了相当多的标准SharePoint生成的字段和列表。我只需要用户创建的字段。

谢谢!

马特

如何通过c#在SharePoint 2007列表中获取用户创建字段的列表?

您正在寻找SPField的FromBaseType属性。如果字段是List的原始模式的一部分,则此属性为true。

查看这篇优秀的SharePoint Exchange文章了解更多。

您可以在SPField中测试SourceId。

来自MSDN文档:

"获取定义内置字段的名称空间,或者(如果是自定义字段)获取标识创建列表或网站的GUID。"