Я пытаюсь получить список элементов из определенного представления. Ниже приведен код
Microsoft.SharePoint.Client.List _lists = context.Web.Lists.GetByTitle("Invoice Register");
context.Load(_lists);
context.ExecuteQuery();
int listCount = _lists.ItemCount; // i get 49000+ count here
View _listsView = _lists.Views.GetByTitle("IT Testing");
context.Load(_listsView);
context.ExecuteQuery();
CamlQuery _query = new CamlQuery();
_query.ViewXml = _listsView.ViewQuery;
Microsoft.SharePoint.Client.ListItemCollection items = _lists.GetItems(_query);
context.Load(items);
context.ExecuteQuery();
int _viewCount = items.Count; // I get nothing here.
Я получаю сообщение об ошибке: Попытка операции запрещена, поскольку она превышает пороговое значение просмотра списка, установленное администратором.
Я уже создал индексы
Я установил ограничение для «ИТ-тестирования» на 5000, как показано здесь.
Если кто-то может направить, это было бы полезно. Я прошел по всем ссылкам, которые мог.
С уважением
Я уже проиндексировал столбцы @vhr
Я использую этот код для загрузки большого количества элементов.
var itemsPerPage = 100;
var query = CamlQuery.CreateAllItemsQuery(itemsPerPage);
var loadMoreItems = false;
do
{
var items = list.GetItems(query);
ctx.Load(items);
ctx.ExecuteQuery();
loadMoreItems = items.Count == itemsPerPage;
query.ListItemCollectionPosition = items.ListItemCollectionPosition;
}
while (loadMoreItems);
Он основан на этом
Это дает мне элементы, которые не существуют в режиме ИТ-тестирования. Мне нужны предметы в ИТ-тестировании.
@Атер Сиддики,
нет прямого способа получить элементы в представлении, поскольку представление имеет только схему запроса и не содержит никаких элементов. Запрос caml может получить те же элементы, что и в представлении, но он вызовет пороговое значение представления списка.
@ user2250152 предоставил хороший метод, можно получить более 5000 элементов с помощью разбиения на страницы. Если вы хотите использовать запрос просмотра, вы можете изменить запрос, как показано ниже:
List tList = context.Web.Lists.GetByTitle("My test list");
CamlQuery camlQuery = new CamlQuery
{
ViewXml = @"<View><Query><Where><Gt><FieldRef Name='ID' /><Value Type='Counter'>20</Value></Gt></Where></Query><OrderBy><FieldRef Name ='FileLeafRef' /></OrderBy><RowLimit>4990</RowLimit></View>" // your view query
};
var itemColl = new List<ListItem>();
do
{
ListItemCollection listItemCollection = tList.GetItems(camlQuery);
context.Load(listItemCollection);
context.ExecuteQuery();
//
itemColl.AddRange(listItemCollection);
camlQuery.ListItemCollectionPosition = listItemCollection.ListItemCollectionPosition;
} while (itemColl.Count < 999); //view row limit
Console.WriteLine(itemColl);
это известная проблема с SharePoint и списками, содержащими более 5000 элементов. вы можете попробовать это natechamberlain.com/2018/05/21/… или использовать Graph API