我希望通过列表网络服务访问调查信息,并显示调查中包含的问题。
结果包含大量 Field 节点,其中一些节点是调查中的问题。其他字段包含其他信息,如作者,最后更改等。
我该如何挑选问题?我原以为所有非问题都会被隐藏,但事实并非如此。
这是我目前的代码。它返回大约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
};
想点什么?
答案 0 :(得分:1)
问题字段的属性“SourceID”是GUID。 所有其他字段的SourceID都为“http:// schema ...”
答案 1 :(得分:0)
我认为最简单的解决方法是找出内置字段的InternalName
,将它们放在一个数组中,然后检查字段名是否在该数组中。例如,您很可能会有“标题”,“创建”,“作者”等。此页面将为您提供一些提示,其中包含哪些字段:http://www.johnholliday.net/downloads/fieldswss.htm
答案 2 :(得分:0)
您可以使用SPField.Group查看某个字段是“基本”列,例如ID /作者等,还是自定义列,它将是一个问题或页面分隔符。
页面分隔符是特定的field type,因此您应该能够通过
获取这些内容if (SPField.Type == SPFieldTypes.PageSeperator)
答案 3 :(得分:0)
看起来它将所有新列(不是父内容类型中的列)视为问题。 仅检索问题的一种方法是获取“概述”视图中的所有字段(“作者”列除外);另一种方法是获取所有不是来自父内容类型的字段,即新字段。