我有一个字段/列列表,其中包含Sharepoint特定字段/列,我自己的自定义字段/列,以及由其他人创建的一堆自定义字段/列(我不知道它们是什么)。我的目标是获取由其他人创建的字段/列的列表。
我的第一个障碍在于如何判断哪些是来自Sharepoint。所以我想知道有没有办法以编程方式检索Sharepoint Specific字段/列的列表?
感谢。
答案 0 :(得分:2)
它不是以编程方式,但在服务器的12 Hive中,在Template / Features / fields下是一个fieldswss.xml,我认为它包含所有标准的SharePoint字段。
更具编程性的方法是遍历站点列并执行一些检查。例如,
List<string> retVal = new List<string>();
using (SPSite site = new SPSite("urlofsite"))
{
using (SPWeb web = site.OpenWeb())
{
List<string> spColGroups = new List<string>() { "Base Columns", "Core Contact and Calendar Columns", "Core Document Columns", "Core Task and Issue Columns", "Extended Columns" }
foreach (SPField field in web.Fields)
{
if (spColGroups.Contains(field.Group))
{
retVal.Add(field.Title);
}
}
}
}
列表retVal将包含属于标准SharePoint站点列组的所有站点列的名称(至少对于WSS。我不知道MOSS)。我自己的个人实践(我不知道这是否常见,但我认为这是一个非常明智的举措)是总是在与默认SharePoint列不同的组中创建自己的自定义列,因此这只会获得SharePoint列。如果您不是这种情况,则必须针对您的情况设计更有用的检查。我希望,如果这不能解决你的问题,那至少可以帮助你走上正轨。
答案 1 :(得分:0)
尝试使用SharePoint提供的列表数据检索Web服务。
http://<site>/_vti_bin/DspSts.asmx
我家里的机器上没有SharePoint来测试这个,但我会尝试“Fields”类。我明天在工作中对此进行测试。
<强>文档:强> http://msdn.microsoft.com/en-us/library/ms774413.aspx
答案 2 :(得分:0)
这可能不是一个详尽的清单,但SPBuiltInFieldId课程将是一个很好的起点。