SharePoint List.GetItems (представление) возвращает ВСЕ элементы вместо отфильтрованных элементов представления - PullRequest
2 голосов
/ 19 марта 2010

Я пытаюсь получить количество элементов в списке на основе представления. Каждый метод, который я пробовал до сих пор, возвращает только общий итог списка. Я пробовал почти каждый метод, с которым столкнулся при поиске, и все заканчивается тем же результатом.

Вот один из методов, которые я пробовал:

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 моего пользовательского элемента управления меню. Я не знаю, имеет ли это какое-то значение, но идея, к которой я стремлюсь, заключается в том, что каждый элемент, который ссылается на представление в определенном списке, будет показывать количество элементов в этом представлении рядом со ссылкой. 1013 *

Есть идеи, почему я получаю итоговый список вместо отфильтрованных? Спасибо!

1 Ответ

6 голосов
/ 19 марта 2010

Если я правильно напомню, вам нужно удалить <Query> из вашего SPQuery. CAML Builders используют его, но это не нужно в фактическом SPQuery. Конечно, вы должны убедиться, что поля существуют.

MyQuery.Query = "<Where><Eq><FieldRef Name='strStatus' /><Value Type='Text'>submitted</Value></Eq></Where>";
...