如何以编程方式从调查中获取问题
-
29-09-2020 - |
题
问题很简单:
如何从调查中获取问题列表?
解决方案
在 Survey
列出问题是一个字段。为了确定字段是问题字段还是常规字段,您可以使用 SourceID
属性,如果出现问题,其值不是 http://schemas.microsoft.com/sharepoint/v3
:
/// <summary>
/// Get questions in Survey List
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public static IEnumerable<SPField> GetSurveyQuestions(SPList list)
{
return (from SPField field in list.Fields
let fieldSchema = XElement.Parse(field.SchemaXml)
let sourceId = fieldSchema.Attribute("SourceID").Value
where sourceId != "http://schemas.microsoft.com/sharepoint/v3"
select field).ToList();
}
用法
using (var site = new SPSite(siteUrl))
{
using (var web = site.OpenWeb())
{
var list = web.Lists[surveyName];
var questions = GetSurveyQuestions(list);
//print questions
foreach (var question in questions)
{
Console.WriteLine(question.Title);
}
}
}
其他提示
我现在发现的唯一答案是:检查每个字段的showinversionhistory属性!
using (SPSite sito = new SPSite("URL"))
{
using (SPWeb web = sito.OpenWeb())
{
var list = web.Lists["SURVEY LIST NAME"];
foreach(var Field in list.Fields.Cast<SPField>().Where(x => x.ShowInVersionHistory))
{
Console.WriteLine(Field.ToString());
}
}
}
.
在我的情况下,这将打印所有问题
有没有更好的方法来做到这一点?