Обновление объектной модели клиента Sharepoint Свойство только одной папки
Я работаю над кодом клиентской модели sharepoint. В папке "User Details Folder" есть папка "John Details". Я пытаюсь обновить 2 свойства для папки "John Details". Как я могу это сделать?
Public Void UpdateColumnsForOnlyOneFolder(maildId1,mailId2){
ClientContext ctx = new ClientContext("http://mytestsite/");
List list = ctx.Web.Lists.GetByTitle("User Details");
Microsoft.SharePoint.Client.ListItemCollection items = list.GetItems(CamlQuery.CreateAllItemsQuery());
ctx.Load(items);
ctx.ExecuteQuery();
foreach (var item in items)
{
item["email1"] = mailId1;
item["email2"] = mailId2;
item.Update();
}
ctx.ExecuteQuery();
}
2 ответа
Решение
Если я правильно понял ваш вопрос, вы хотели бы обновить свойства элемента списка, связанного с папкой. Если это так, вы можете рассмотреть следующий подход:
- Получить папку по URL, используя метод Web.GetFolderByServerRelativeUrl
- Получить связанный элемент списка с помощью свойства Folder.ListItemAllFields
- Обновить свойства элемента списка
пример
using (var ctx = new ClientContext(webUri))
{
var web = ctx.Web;
var folder = web.GetFolderByServerRelativeUrl("/site/Documents/folder/sub folder");
var listItem = folder.ListItemAllFields;
listItem["PropertyName"] = "PropertyValue";
listItem.Update();
ctx.ExecuteQuery();
}
Вот код, который будет обновлять только элементы одной папки
Public Void UpdateColumnsForOnlyOneFolder(maildId1,mailId2){
ClientContext ctx = new ClientContext("http://mytestsite/");
List list = ctx.Web.Lists.GetByTitle("User Details");
CamlQuery spQuery = CamlQuery.CreateAllItemsQuery();
spQuery.FolderServerRelativeUrl = "Enter Relative URL TO FOLDER" // Example "/managedpath/site/Lists/listname/Folder Name"
Microsoft.SharePoint.Client.ListItemCollection items = list.GetItems(spQuery);
ctx.Load(items);
ctx.ExecuteQuery();
foreach (Microsoft.SharePoint.Client.ListItem item in items)
{
item["email1"] = mailId1;
item["email2"] = mailId2;
item.Update();
}
ctx.ExecuteQuery();
}
Пожалуйста, отметьте как ответ, если это работает для вас.