Я пытаюсь подсчитать количество элементов в списке на основе представления. Каждый метод, который я пробовал до сих пор, возвращает только общую сумму списка. Я пробовал практически все методы, с которыми сталкивался во время поиска, и все заканчивает тем же самым результатом.
Вот один из методов, которые я пробовал:
SPWeb web = SPContext.Current.Web;
SPView view = web.GetViewFromUrl("url to my view");
int count = view.ParentList.GetItems(view).Count;
В моем списке 28 элементов, но представление, на которое я ссылаюсь, фильтрует его и показывает четыре элемента. Я ожидаю, что мой счет будет 4, а не 28, но всегда получаю 28.
Вот еще один метод, который я пробовал:
SPSite site = SPContext.Current.Site;
SPWeb web = site.OpenWeb();
SPQuery MyQuery = new SPQuery();
MyQuery.Query = "<Query><Where><Eq><FieldRef Name='strStatus' /><Value Type='Text'>submitted</Value></Eq></Where></Query>";
IEnumerable<SPListItem> results = web.Lists["Requests"].GetItems(MyQuery).Cast<SPListItem>();
// results.Count() is 28... should be 4
Итак, в этом методе я пропускаю представление и просто пытаюсь передать запрос CAML. При тестировании моего запроса в U2U, как и ожидалось, возвращаются четыре результата ...
Более широкая картина заключается в том, что я делаю это внутри обработчика событий OnMenuItemDataBound моего настраиваемого элемента управления меню. Я не знаю, имеет ли это значение вообще, но идея, к которой я стремлюсь, заключается в том, что каждый элемент, который ссылается на представление в определенном списке, будет показывать количество элементов в этом представлении рядом со ссылкой.
Есть идеи, почему я получаю общий список вместо отфильтрованных итогов? Спасибо!