2017-02-10 2 views
0

У меня есть очень простая библиотека документов в SharePoint Online:Получить Mulitple значения в столбце библиотеки для каждого из элементов списка в Sharepoint с CSOM

mysite.sharepoint.com/site/Documents 

Я добавил колонку библиотеки на библиотеке, и это множественный выбор позволил.

документы имеют несколько предметов:

Document1.docx : Maths, Science, Internet 
Document2.docx : Maths, Other, Science 

я хочу перечислить каждый пункт recursivly в консоли со значениями по этому Colum и заменить одну из значения.

Я хочу заменить тему «Maths» на «Математику» кодом C# и CSOM.

Вот мой код. Он работает, когда есть только одно значение, но когда есть множество объектов, выбранных для документа, оно кажется пустым.

Я попытался выполнить бросок, но он, кажется, возвращает массив объектов, и его нельзя перечислить.

 ClientContext context = newClientContext("https://mysite.sharepoint.com/site/"); 

     Web web = context.Web; 

     List list = context.Web.Lists.GetByTitle("Documents"); 

     CamlQuery query = new CamlQuery(); 
     query.ViewXml = @"<View Scope='Recursive' />"; 
     ListItemCollection items = list.GetItems(query); 

     context.Load(list); 
     context.Load(items); 

     context.ExecuteQuery(); 

     foreach (ListItem item in items) 
     { 

      if (item["Subjects"] != null && ((item["Subjects"]).ToString()).Contains("Maths")){ 
       Console.WriteLine(item.Id + " - " + item["Subjects"]); 
       item["Subjects"] = "Mathematics"; 
       item.Update(); 
       context.ExecuteQuery(); 
      } 
     } 

Результат должен быть:

Document1.docx : Mathematics, Science, Internet 
Document2.docx : Mathematics, Other, Science 

ответ

0

мне удалось петлю субъектов путем приведения его в массив строк:

   var subjects= (string[])item["Subjects"]; 
       foreach (var subject in subjects) 
       { 
        Console.WriteLine(subject); 
       } 

После того как я могу построить массив и обновить стоимость:

  string[] newValues = { "Mathematics", "123" }; 
      item["Subjects"] = newValues ; 
0

Вы можете добавить значения в существующий столбец поля выбора в списке SharePoint из приемника событий ItemAdded того же списка. Ее вы идете !!!!!

string newPartitionName = Convert.ToString(properties.ListItem["Title"]); // current item     
        using (SPSite site = new SPSite(RBSSiteURL)) 
        { 
         using (SPWeb web = site.OpenWeb()) 
         { 
          SPSecurity.RunWithElevatedPrivileges(delegate 
          { 
           web.AllowUnsafeUpdates = true; 
           SPList spList = web.Lists["Room List"]; 
           SPFieldMultiChoice spChoiceField = (SPFieldMultiChoice)spList.Fields["Select Partitions"]; 
           spChoiceField.AddChoice(newPartitionName); 
           spChoiceField.Update(); 
           spList.Update(); 
           web.AllowUnsafeUpdates = false; 
          }); 
         } 
        } 

Отметьте как ответ, если найдете решение для своего проекта. HAPPY SHAREPOINTING .....

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