Попытка добавить существующий столбец сайта в пользовательский список с помощью Visual Studio 2017 | (Sharepoint) [Microsoft.Sharepoint.Client] - PullRequest
0 голосов
/ 05 июля 2019

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

На данный момент единственное, что нужно сделать, это вручную добавить существующий настраиваемый элемент.столбец в моем настраиваемом списке.

        List lst = web.Lists.GetByTitle("Product List");
        ListItemCreationInformation itmCreationInfo = new ListItemCreationInformation();
        ListItem newItem = lst.AddItem(itmCreationInfo);
        newItem["Title"] = "This is a title! Yey!";
        newItem["Product"] = "Ultimate Gaming PC with gaming console";
        newItem.Update();
        ctx.ExecuteQuery();
        Console.WriteLine("All tasks completed.  Press any key to close...");
        Console.ReadLine();

Я ожидаю, что результат будет похож на «Продукт», автоматически добавленный в столбец моего основного списка.

1 Ответ

0 голосов
/ 08 июля 2019

Пожалуйста, используйте следующий код для автоматического добавления колонки сайта в список:

        string userName = "user@tenant.onmicrosoft.com";
        string password = "***********";
        var securePassword = new SecureString();
        foreach (char c in password)
        {
            securePassword.AppendChar(c);
        }
        using (var clientContext = new ClientContext("https://tenant.sharepoint.com/sites/sitename"))
        {
            clientContext.Credentials = new SharePointOnlineCredentials(userName, securePassword);
            Web web = clientContext.Web;
            clientContext.Load(web);
            clientContext.ExecuteQuery();
            List targetList = clientContext.Web.Lists.GetByTitle("Product List");
            clientContext.Load(targetList);
            clientContext.ExecuteQuery();
            string siteCols = "Product";
            FieldCollection fieldCollection = clientContext.Web.AvailableFields;
            clientContext.Load(fieldCollection);
            clientContext.ExecuteQuery();
            Field myField = Enumerable.FirstOrDefault(fieldCollection, ft => ft.InternalName == siteCols);
            targetList.Fields.Add(myField);
            targetList.Update();
            clientContext.ExecuteQuery();
        }   

enter image description here

...