Como obter perguntas de uma pesquisa de maneira programática
-
29-09-2020 - |
Pergunta
A questão é bastante simples:
como posso obter a lista de perguntas de uma pesquisa?
Solução
Em Survey
list a pergunta é um campo.Para determinar se o campo é uma pergunta ou um campo normal, você pode utilizar SourceID
atributo, no caso de perguntas seu valor não é 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();
}
Uso
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);
}
}
}
Outras dicas
A única resposta que encontrei agora é esta:verificando a propriedade ShowInVersionHistory de cada campo!
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());
}
}
}
No meu caso, isso imprimirá todas as perguntas
Existe uma maneira melhor de fazer isso?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange