2015-09-07 6 views
1

У меня есть много сайтов с библиотеками документов, где опция «Сделать» новой папки «доступна» доступна как «нет». Я хотел бы пройти через эти библиотеки документов и изменить это на «да». Как я могу это достичь? После выполнения поиска я обнаружил, что с файлами в библиотеке документов можно многое сделать, но не нашел примера, который показывает, как изменять настройки (дополнительные настройки) самой библиотеки.Изменить команду «Сделать новую папку»? вариант с моделью объекта SharePoint SharePoint.

Спасибо, В.

ответ

1

Поскольку вы ищете решение, которое использует CSOM API, в приведенном ниже примере показано, как включить папки для библиотек документов:

using (var ctx = new ClientContext(webUri)) 
{ 
    var result = ctx.LoadQuery(ctx.Web.Lists.Where(l => l.BaseType == BaseType.DocumentLibrary && !l.Hidden)); 
    ctx.ExecuteQuery(); 
    foreach (var list in result) 
    { 
     list.EnableFolderCreation = true; 
     list.Update(); 
    } 
    ctx.ExecuteQuery(); 
} 

VB.Net версия

Using context As Microsoft.SharePoint.Client.ClientContext = New Microsoft.SharePoint.Client.ClientContext(webUri) 
     Dim qry = From l In context.Web.Lists 
      Where (CInt(l.BaseType) = 1) AndAlso Not l.Hidden 
      Select l 
     Dim result As IEnumerable(Of Microsoft.SharePoint.Client.List) = context.LoadQuery(qry) 
     context.ExecuteQuery() 
     Dim list As Microsoft.SharePoint.Client.List 
     For Each list In result 
      list.EnableFolderCreation = True 
      list.Update() 
     Next 
     context.ExecuteQuery() 

    End Using 
+0

Спасибо. Не могли бы вы рассказать мне, как перевести эту часть на vb? 'var result = ctx.LoadQuery (ctx.Web.Lists.Where (l => l.BaseType == BaseType.DocumentLibrary &&! l.Hidden));' Я пробовал конвертеры, но это: 'Dim result = ctx.LoadQuery (ctx.Web.Lists.Where (функция (l) l.BaseType = BaseType.DocumentLibrary AndAlso Not l.Hidden))' генерирует это исключение: Выражение ((ConvertChecked (l.BaseType) == 1) AndAlso Not (l.Hidden)) не поддерживается. Я думаю, я знаю, что он делает, и, наконец, закончил рабочий код, позже проверив список basetype. Еще раз спасибо, vm - – vilmarci

+0

@vilmarci, см. Обновленный ответ с примером Vb.Net –

1

с помощью PowerShell.

$list.EnableFolderCreation = $true; 
$list.update(); 

положить это внутри для цикла, который перебирает по спискам/сайтов/перемычками вашей фермы. что-то вроде:

$sc = http://myweb.com/mysitecollection 
$spsite = Get-SPsite $sc 

foreach ($web in $spsite.AllWebs) 
{ 

    foreach ($list in $web.Lists) 
    { 
     $list.EnableFolderCreation = $true; 
     $list.update(); 
    } 
} 
$spsite.dispose() 

Если вы предпочитаете делать это с использованием объектной модели клиента, бросьте это в консольное приложение. (Убедитесь, что вы ссылаетесь Microsoft.SharePoint.dll)

using System; 
using Microsoft.SharePoint; 

namespace SharepointModifier 
{ 
    class FolderEnabler 
    { 
     static void Main(string[] args) 
     { 

      string sitecollectionaddress = "Http://mysitecollection.com/"; 

      using (SPSite mysites = new SPSite(sitecollectionaddress)) 
      { 
       foreach (SPWeb web in mysites.AllWebs) 
       { 
        foreach (SPList list in web.Lists) 
        { 
         list.EnableFolderCreation = true; 
         //Make any other changes to list properties here 
         list.Update(); 
         Console.WriteLine(list.Title + " Has been updated.");  
        } 
       } 
      } 

     } 
    } 
} 
+0

спасибо. Я преобразую код в vb и протестирую его. Итак ... похоже, что я должен обрабатывать библиотеку документов в виде списка. – vilmarci