2010-03-16 3 views
3

Я хочу получить информацию обследований через веб-службу и отобразить вопросы, содержащиеся в опросе.Обзор Sharepoint: как определить поля вопроса при получении информации обследований из веб-службы Списки?

В результате содержится большое количество Поля, некоторые из которых являются вопросами в опросе. Другие поля содержат другую информацию, такую ​​как автор, последние изменения и т. Д.

Как я могу выбрать вопросы? Я думал, что все не-вопросы будут скрыты, но это не так.

Вот мой код так, как в данный момент. Он возвращает около 16 элементов. Опрос имеет 6 вопросов ...

// read question definitions 
string[] HandleTypes = new string[] { "Number", "DateTime", "Text", "Choice", "GridChoice", "Boolean" }; 
var query = from n in node.Descendants(ns+"Field") 
      where (n.Attribute("Hidden") == null || n.Attribute("Hidden").Value.ToLower() == "true") 
      && (n.Attribute("Type") != null && HandleTypes.Contains(n.Attribute("Type").Value)) 
      select new Question(n.Attribute("ID").Value) 
      { 
       Text = n.Attribute("DisplayName").Value, 
       QuestionType = n.Attribute("Type").Value, 
       Element = n 
      }; 

Идеи кто-нибудь?

ответ

0

Я считаю, что простейшим обходным решением является выяснение InternalName s встроенных полей, размещение их в массиве, а затем проверка наличия имени поля в этом массиве или нет. Например, вы, скорее всего, будете иметь «Title», «Created», «Author» и так далее. На этой странице вы найдете несколько подсказок, какие из полей встроены: http://www.johnholliday.net/downloads/fieldswss.htm

0

Вы можете использовать SPField.Group, чтобы узнать, является ли поле «базовым» столбцом, например ID/Author и т. Д., Или настраиваемый столбец, который будет быть вопросом или разделителем страниц.

страница Сепаратор является частным field type, так что вы должны быть в состоянии получить те от

if (SPField.Type == SPFieldTypes.PageSeperator) 
+0

Могу ли я получить эту информацию через веб-службу? – paul

+0

Оппс - мне плохо. Не прочитал Q правильно! Вы должны иметь возможность использовать веб-службу GetList, чтобы получить схему списка и типы его полей. http://msdn.microsoft.com/en-us/library/lists.lists.getlist.aspx – Ryan

1

Атрибут «SourceId» на вопрос полей является GUID. Все остальные поля имеют SourceID с «http: // schema ...»

+0

Этот ответ прост. Я могу добавить (развернуть через schema.xml) поле с 'sourceId =" http: // schema ... ";' и оно будет отображаться как вопрос опроса – Andrey

+0

, если вы разворачиваете пользовательскую схему, то это в ваших руках выбрать вопросы из опроса. Для использования стандартного/из окна обзора мой подход работает, хотя я признаю, что решение является более менее предположением в то же время, – Karl

0

Похоже, что он рассматривает все новые столбцы (не одни из родительских типов контента) в качестве вопросов. Одним из способов получения только вопросов является захват всех полей, находящихся в представлении «Обзор» (кроме столбца «Автор»); другим способом было бы захватить все поля, которые не поступают из родительского типа контента, то есть новые поля.

Смежные вопросы