Sharepoint 调查:从列表 Web 服务获取调查信息时如何识别问题字段?
我想通过列表网络服务访问调查信息并显示调查中包含的问题。
结果包含大量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
};
有人有什么想法吗?
I am wanting to access survey information via the Lists web service and display the questions contained in the survey.
The result contains a large number of Field nodes some of which are the questions in the survey. The other fields contain other information such as author, last changed etc.
How can I pick out the questions? I had thought that all non-questions would be hidden but this is not the case.
Here is my code as it is at the moment. It returns about 16 items. The survey has 6 questions...
// 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
};
Ideas anyone?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
问题字段的属性“SourceID”是 GUID。
所有其他字段都有一个带有“http://schema...”的 SourceID
The attribute "SourceID" for question fields is a GUID.
All other fields have a SourceID with "http://schema..."
我相信最简单的解决方法是找出内置字段的InternalName,将它们放入数组中,然后检查字段名是否在该数组中。例如,您很可能有“标题”、“创建者”、“作者”等。此页面将为您提供一些提示,其中哪些字段是内置的: http://www .johnholliday.net/downloads/fieldswss.htm
I believe the simplest workaround is to find out the
InternalName
s of the built-in fields, put them in an array, and then to check if the fieldname is in that array or not. For instance, you will most likely have "Title", "Created", "Author" et cetera. This page will give you some hints, which of the fields are built-in: http://www.johnholliday.net/downloads/fieldswss.htm您可以使用 SPField.Group 来查找如果字段是“基本”列(例如 ID/作者等)或自定义列(将作为问题或页面分隔符),则输出。
页面分隔符是特定的字段类型所以你应该能够通过
You can use SPField.Group to find out if a field is a 'Base' column such as ID/Author etc or a custom column which will be a question or page separator.
The page separator is a particular field type so you should be able to get those by
看起来它将所有新列(而不是来自父内容类型的列)视为问题。
仅检索问题的一种方法是获取“概述”视图中的所有字段(作者列除外);另一种方法是获取不是来自父内容类型的所有字段,即新字段。
It looks like it treats all new columns (not ones from the parent content types) as questions.
One way to retrieve only questions is to grab all the fields that are in "Overview" view (except for Author column); another way would be to grab all the fields that are not coming from a parent content type, i.e. new fields.