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

时间:2011-12-08 20:05:17

标签: c# .net sharepoint sharepoint-2007

您好,感谢您的期待!

背景

我目前有一个C#方法用于循环SharePoint列表集并返回这些SP列表的列表,包括其列/ SPField的嵌套列表。

问题

如何通过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;
    }

正如您所看到的,现在我正在过滤哪些SPField不是&#34; Hidden&#34;,但这仍然会返回一些标准的SharePoint生成的字段与列表。我只需要用户创建的字段。

谢谢!

马特

2 个答案:

答案 0 :(得分:2)

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

查看此商品FromBaseType了解更多信息。

答案 1 :(得分:0)

您可以在SPField中测试SourceId。

来自MSDN documentation

“获取定义内置字段的命名空间,或者,如果是自定义字段,则获取标识创建它的列表或网站的GUID。”