2014-02-03 2 views
0

Я хочу получить все элементы списка SharePoint, но не данные столбцов по умолчанию.Получить редактируемые элементы списка sharepoint

В принципе, я хочу, чтобы все редактируемые элементы списка SharePoint отображались пользователю.

Как я могу это сделать с помощью запросов CAML и C#?

+0

Любые усилия, до сих пор? –

+0

Какой код вы уже пробовали? Где ваше исключение? –

+0

Я могу получить все элементы или несколько элементов http://msdn.microsoft.com/en-us/library/office/ee534956(v=office.14).aspx. Чтобы получить конкретные элементы, нам нужно указать имя столбца. Я не хочу делать жесткое кодирование. – Yogesh

ответ

0

Вы можете использовать этот код, чтобы определить, является ли поле редактирования или нет:

public static bool IsFieldEditableInSP2010(SPField spField) 
     { 
      SPList spList = spField.ParentList; 

      SPFieldLookup fldLookup = spField as SPFieldLookup; 
      bool bCountRelated = fldLookup != null && fldLookup.CountRelated; 
      bool bMcolLookup = fldLookup != null && fldLookup.IsDependentLookup && 
              fldLookup.LookupList != "Docs"; 

      SPFieldType t = spField.Type; 
      if (t == SPFieldType.Computed || 
       t == SPFieldType.File || 
       t == SPFieldType.Recurrence || 
       t == SPFieldType.CrossProjectLink || 
       t == SPFieldType.AllDayEvent) 
      { 
       return false; 
      } 

      if (!spField.Reorderable && 
       !bCountRelated && 
       !(spField.ReadOnlyField && spField.Type == SPFieldType.User) && 
       !(bMcolLookup && !spField.Hidden) && 
       !spList.HasExternalDataSource) 
      { 
       return false; 
      } 


      if ((spField.ReadOnlyField && !bCountRelated && !bMcolLookup) || 
       spList.HasExternalDataSource) 
      { 
     if(spField.Type == SPFieldType.Calculated || spField.Type == SPFieldType.User) 
      return true; 

      } 
      else 
       return true; 

      return false; 
     } 
+0

Есть ли способ использовать запрос CAML, так как эту функцию мне нужно вызвать для каждого столбца? – Yogesh

+0

CAML предназначен для извлечения данных. Вам нужно получить только редактируемые поля. Таким образом, вам нужно проверить, доступны ли поля для редактирования или нет, используя сниппет, показанный выше. –

+0

Как насчет производительности, поскольку эта функция будет вызываться для каждого столбца? – Yogesh

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