SharePoint的List.GetItems(视图)返回所有项目而不是筛选的视图项目

Sea*_*anW 2 sharepoint spquery

我正在尝试根据视图获取列表中的项目数.到目前为止我尝试的每种方法只返回列表的总计.我已经尝试了搜索时遇到的每一种方法,一切都以相同的结果结束.

这是我尝试过的方法之一:

SPWeb web = SPContext.Current.Web;
SPView view = web.GetViewFromUrl("url to my view");
int count = view.ParentList.GetItems(view).Count;
Run Code Online (Sandbox Code Playgroud)

我的列表有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
Run Code Online (Sandbox Code Playgroud)

所以在这个方法中,我正在跳过视图并尝试传入CAML查询.在U2U中测试我的查询时,按预期返回四个结果...

更大的图片是我在自定义菜单控件的OnMenuItemDataBound事件处理程序中执行此操作.我不知道这是否会产生重大影响,但我想要的是,每个项目链接到特定列表中的视图,将显示链接旁边该视图中的项目数.

任何想法为什么我得到一个列表总数而不是过滤总数?谢谢!

Fra*_*ino 6

如果我正确提醒,你需要删除<Query>你的SPQuery.CAML Builders使用它,但在实际中它是不必要的SPQuery.当然,您需要确保字段存在.

MyQuery.Query = "<Where><Eq><FieldRef Name='strStatus' /><Value Type='Text'>submitted</Value></Eq></Where>";
Run Code Online (Sandbox Code Playgroud)