Cómo obtener preguntas de una encuesta mediante programación
-
29-09-2020 - |
Pregunta
La pregunta es bastante simple:
¿Cómo puedo obtener la lista de preguntas de una Encuesta?
Solución
En Survey
enumerar la pregunta es un campo.Para determinar si el campo es una pregunta o un campo normal, puede utilizar SourceID
atributo, en caso de preguntas su valor no es 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);
}
}
}
Otros consejos
La única respuesta que encontré en este momento es esto: ¡Comprobación de la propiedad ShowInversionhistoria 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());
}
}
}
En mi caso, esto imprimirá todas las preguntas
¿Hay una mejor manera de hacer eso?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a sharepoint.stackexchange