Question

La question est assez simple:

comment puis-je obtenir la liste des questions à partir d'une Enquête?

Était-ce utile?

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
scroll top