SharePoint: как программно добавлять элементы в экземпляр пользовательского списка

Я действительно ищу либо небольшой фрагмент кода, либо хороший учебник по этому вопросу.

У меня есть консольное приложение С#, которое я буду использовать для добавления элементов списка в свой пользовательский список. Я также создал собственный тип контента. Поэтому не уверен, что мне нужно создать класс С# и из этого типа контента. Возможно нет.

заранее спасибо


person JL.    schedule 26.08.2009    source источник


Ответы (5)


Я думаю, что эти оба сообщения в блоге должны помочь вам решить вашу проблему.

http://blog.the-dargans.co.uk/2007/04/programmatically-adding-items-to.html http://asadewa.wordpress.com/2007/11/19/adding-a-custom-content-type-конкретный-элемент-в-списке-ресурсов/

Короткая прогулка по:

  1. Получите экземпляр списка, в который вы хотите добавить элемент.
  2. Добавьте новый элемент в список:

    SPListItem newItem = list.AddItem();
    
  3. Чтобы связать новый элемент с типом контента, вы должны установить идентификатор типа контента для нового элемента:

    newItem["ContentTypeId"] = <Id of the content type>;
    
  4. Установите поля, указанные в вашем типе контента.

  5. Зафиксируйте свои изменения:

    newItem.Update();
    
person Flo    schedule 26.08.2009

Проще говоря, вам нужно будет выполнить шаг.

  1. Вам необходимо сослаться на Microsoft.SharePoint.dll в приложение.
  2. Предполагая, что имя списка — Test, и у него есть только одно поле «Название», вот код.

            using (SPSite oSite=new SPSite("http://mysharepoint"))
        {
            using (SPWeb oWeb=oSite.RootWeb)
            {
                SPList oList = oWeb.Lists["Test"];
                SPListItem oSPListItem = oList.Items.Add();
                oSPListItem["Title"] = "Hello SharePoint";
                oSPListItem.Update();
            }
    
        }
    
  3. Обратите внимание, что вам нужно запустить это приложение на том же сервере, где установлен SharePoint.

  4. Вам не нужно создавать пользовательский класс для пользовательского типа контента.

person Kusek    schedule 26.08.2009
comment
Можете ли вы подробнее рассказать об этом «вам нужно запустить это приложение на том же сервере»? Что, если я создам это приложение на одном сервере с помощью SharePoint.dll и запущу его для других сайтов SharePoint. - person Yogesh; 11.04.2013

Вы можете создать элемент в своем пользовательском списке SharePoint, выполнив следующие действия:

using (SPSite site = new SPSite("http://sharepoint"))
{
    using (SPWeb web = site.RootWeb)
    {
        SPList list = web.Lists["My List"];
        SPListItem listItem = list.AddItem();
        listItem["Title"] = "The Title";
        listItem["CustomColumn"] = "I am custom";
        listItem.Update();
     }
}

Использование list.AddItem() должно сохранять перечисляемые элементы списков.

person Andrew    schedule 15.09.2011
comment
list.Additem(), насколько я понимаю, для версий старше 2007 года. В 2007 году - только list.Items.Add() (что некрасиво с точки зрения производительности) - person Gennady G; 28.09.2016

Вот как это было на сайте Microsoft, когда я просто настраивал SPSite и SPWeb, поскольку они могут различаться от среды к среде, и это помогает не жестко кодировать их:

using (SPSite oSiteCollection = new SPSite(SPContext.Current.Site.Url))
{
    using (SPWeb oWeb = oSiteCollection.OpenWeb(SPContext.Current.Web))
    {
        SPList oList = oWeb.Lists["Announcements"];
        // You may also use 
        // SPList oList = oWeb.GetList("/Lists/Announcements");
        // to avoid querying all of the sites' lists
        SPListItem oListItem = oList.Items.Add();
        oListItem["Title"] = "My Item";
        oListItem["Created"] = new DateTime(2004, 1, 23);
        oListItem["Modified"] = new DateTime(2005, 10, 1);
        oListItem["Author"] = 3;
        oListItem["Editor"] = 3;
        oListItem.Update();
    }
}

Источник: SPListItemClass (Microsoft.SharePoint). (2012). Получено 22 февраля 2012 г. с http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistitem.aspx.

person vapcguy    schedule 22.02.2012

У меня была аналогичная проблема, и я смог решить ее, следуя приведенному ниже подходу (аналогично другим ответам, но также нужны учетные данные),

1- добавить Microsoft.SharePointOnline.CSOM с помощью инструментов->Диспетчер пакетов NuGet->Управление пакетами NuGet для решения->Обзор->выбрать и установить

2- Добавьте "используя Microsoft.SharePoint.Client; "

затем приведенный ниже код

        string siteUrl = "https://yourcompany.sharepoint.com/sites/Yoursite";
        SecureString passWord = new SecureString();

        var password = "Your password here";
        var securePassword = new SecureString();
        foreach (char c in password)
        {
            securePassword.AppendChar(c);
        }
        ClientContext clientContext = new ClientContext(siteUrl);
        clientContext.Credentials = new SharePointOnlineCredentials("[email protected]", securePassword);/*passWord*/
        List oList = clientContext.Web.Lists.GetByTitle("The name of your list here");
        ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
        ListItem oListItem = oList.AddItem(itemCreateInfo);
        oListItem["PK"] = "1";
        oListItem["Precinct"] = "Mangere";
        oListItem["Title"] = "Innovation";
        oListItem["Project_x0020_Name"] = "test from C#";
        oListItem["Project_x0020_ID"] = "ID_123_from C#";
        oListItem["Project_x0020_start_x0020_date"] = "2020-05-01 01:01:01";
        oListItem.Update();

        clientContext.ExecuteQuery();

Помните, что ваши поля могут отличаться от того, что вы видите, например, в моем списке я вижу «Имя проекта», а фактическое значение — «Project_x0020_ID». Как получить эти значения (т.е. внутренние значения)?

Несколько подходов:

1- Используйте поток MS и посмотрите их

2- https://mstechtalk.com/check-column-internal-name-sharepoint-list/ или https://sharepoint.stackexchange.com/questions/787/finding-the-internal-name-and-display-name-for-a-list-column

3- Используйте программу чтения C# и прочитайте свой список точек обмена

Остальные операции (обновление/удаление): https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ee539976(v%3Doffice.14)

person Mohsen Sichani    schedule 08.06.2020