Procédure de programmation pour obtenir des questions à partir d'une Enquête
-
29-09-2020 - |
Question
La question est assez simple:
comment puis-je obtenir la liste des questions à partir d'une Enquête?
La solution
Dans Survey
la liste de la question est un champ.Afin de déterminer si le terrain est une question ou régulières sur le terrain vous pourriez utiliser SourceID
attribut, en cas de questions que sa valeur n'est pas 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();
}
L'utilisation de la
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);
}
}
}
Autres conseils
La seule réponse que j'ai trouvée en ce moment est la suivante: vérifier la propriété ShowinversionHistory de chaque champ!
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());
}
}
}
Dans mon cas, cela imprimera toutes les questions
Y a-t-il un meilleur moyen de le faire?
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange