3

我想通过 Lists Web 服务访问调查信息并显示调查中包含的问题。

结果包含大量字段节点,其中一些是调查中的问题。其他字段包含其他信息,例如作者、上次更改等。

我怎样才能挑出问题?我原以为所有非问题都会被隐藏,但事实并非如此。

这是我目前的代码。它返回大约 16 个项目。该调查有6个问题...

// read question definitions
string[] HandleTypes = new string[] { "Number", "DateTime", "Text", "Choice", "GridChoice", "Boolean" };
var query = from n in node.Descendants(ns+"Field")
            where (n.Attribute("Hidden") == null || n.Attribute("Hidden").Value.ToLower() == "true")
            && (n.Attribute("Type") != null && HandleTypes.Contains(n.Attribute("Type").Value))
            select new Question(n.Attribute("ID").Value)
            {
                Text = n.Attribute("DisplayName").Value,
                QuestionType = n.Attribute("Type").Value,
                Element = n
            };

任何人的想法?

4

4 回答 4

1

问题字段的属性“SourceID”是一个 GUID。所有其他字段都有一个带有“http://schema...”的 SourceID

于 2012-07-25T06:18:30.893 回答
0

您可以使用SPField.Group来确定字段是“基本”列,例如 ID/作者等,还是作为问题或页面分隔符的自定义列。

页面分隔符是一种特定的字段类型,因此您应该能够通过

if (SPField.Type == SPFieldTypes.PageSeperator)
于 2010-03-16T10:48:25.993 回答
0

看起来它将所有新列(不是来自父内容类型的列)视为问题。仅检索问题的一种方法是获取“概述”视图中的所有字段(作者列除外);另一种方法是获取并非来自父内容类型的所有字段,即新字段。

于 2013-09-16T17:25:25.960 回答
0

我相信最简单的解决方法是找出InternalName内置字段的 s,将它们放入数组中,然后检查字段名是否在该数组中。例如,您很可能有“标题”、“创建”、“作者”等。这个页面会给你一些提示,哪些字段是内置的:http ://www.johnholliday.net/downloads/fieldswss.htm

于 2010-03-16T10:00:38.833 回答