Come ottenere programmare le domande da un sondaggio
-
29-09-2020 - |
Domanda
La domanda è abbastanza semplice:
Come posso ottenere la lista di domande da un sondaggio?
Soluzione
Nell'elenco Survey
La domanda è un campo.Per determinare se il campo è una domanda o un campo regolare è possibile utilizzare l'attributo SourceID
, in caso di domande il suo valore non è 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();
}
.
Utilizzo
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);
}
}
}
. Altri suggerimenti
L'unica risposta che ho trovato in questo momento è questa: controllando la proprietà showinversionhistory di ciascun 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());
}
}
}
.
Nel mio caso, questo stampa tutte le domande
C'è un modo migliore per farlo?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange