Изменить доступность команды «Создать новую папку»? вариант с клиентской объектной моделью Sharepoint

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

Спасибо, вм


person vilmarci    schedule 07.09.2015    source источник


Ответы (2)


Поскольку вы ищете решение, использующее 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
person Vadim Gremyachev    schedule 09.09.2015
comment
Спасибо. Подскажите, пожалуйста, как перевести эту часть на vb? 'var result = ctx.LoadQuery(ctx.Web.Lists.Where(l => l.BaseType == BaseType.DocumentLibrary && !l.Hidden));' Я пробовал конвертеры, но это: «Dim result = ctx.LoadQuery(ctx.Web.Lists.Where(Function(l) l.BaseType = BaseType.DocumentLibrary AndAlso Not l.Hidden))» выдает это исключение: выражение ((ConvertChecked (l.BaseType) == 1) AndAlso Not(l.Hidden)) не поддерживается. Я думаю, я знаю, что он делает, и, наконец, получил рабочий код, проверив базовый тип списка позже. Еще раз спасибо, вм- - person vilmarci; 10.09.2015
comment
@vilmarci, см. обновленный ответ с примером Vb.Net - person Vadim Gremyachev; 10.09.2015

Использование пауэршелла.

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

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

$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.");    
                    }
                }
            }

        }
    }
}
person Nikerym    schedule 08.09.2015
comment
Спасибо. Я конвертирую код в vb и тестирую его. Итак... похоже, я должен обрабатывать библиотеку документов как список. - person vilmarci; 08.09.2015