SharePoint';GetItems(视图)返回所有项,而不是筛选的视图项

SharePoint';GetItems(视图)返回所有项,而不是筛选的视图项,sharepoint,spquery,Sharepoint,Spquery,我试图根据视图获取列表中的项目计数。到目前为止,我尝试的每个方法都只返回列表的总数。我尝试了搜索过程中遇到的所有方法,结果都是一样的 以下是我尝试过的方法之一: SPWeb web = SPContext.Current.Web; SPView view = web.GetViewFromUrl("url to my view"); int count = view.ParentList.GetItems(view).Count; SPSite site = SPContext.Current

我试图根据视图获取列表中的项目计数。到目前为止,我尝试的每个方法都只返回列表的总数。我尝试了搜索过程中遇到的所有方法,结果都是一样的

以下是我尝试过的方法之一:

SPWeb web = SPContext.Current.Web;
SPView view = web.GetViewFromUrl("url to my view");
int count = view.ParentList.GetItems(view).Count;
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
我的列表有28个项目,但我引用的视图会过滤它并显示四个项目。我希望我的计数是4,而不是28-但28是我一直得到的

以下是我尝试过的另一种方法:

SPWeb web = SPContext.Current.Web;
SPView view = web.GetViewFromUrl("url to my view");
int count = view.ParentList.GetItems(view).Count;
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
SPSite site=SPContext.Current.site;
SPWeb=site.OpenWeb();
SPQuery MyQuery=新建SPQuery();
MyQuery.Query=“已提交”;
IEnumerable results=web.Lists[“Requests”].GetItems(MyQuery.Cast();
//results.Count()是28。。。应该是4
因此,在这个方法中,我跳过视图,只是尝试传入一个CAML查询。在U2U中测试我的查询时,将按预期返回四个结果

更大的情况是,我在自定义菜单控件的OnMenuItemDataBound事件处理程序中执行此操作。我不知道这是否有什么不同,但我的想法是,链接到特定列表中某个视图的每个项目都会在链接旁边显示该视图中的项目数


你知道为什么我得到的是列表总数而不是过滤的总数吗?谢谢

如果我提醒正确,您需要从
SPQuery
中删除
。CAML构建器使用它,但在实际的
SPQuery
中不需要它。当然,您需要确保字段存在

MyQuery.Query = "<Where><Eq><FieldRef Name='strStatus' /><Value Type='Text'>submitted</Value></Eq></Where>";
MyQuery.Query=“已提交”;

查询只是一种方法。。。在最初的帖子中,我只是演示了如何使用视图和查询来完成此操作,但仍然得到相同的结果。@SeanW,如果SPQuery的query属性错误,您将获得所有项目。在演示中,去掉
和结束标记
。我不知道为什么CamlQueryBuilder会把它们放在那里,但是如果你只是简单地复制粘贴它,它会使查询的语法错误。哦,我明白了F.Aquino现在想说的-是的,我记得在某个时候也读过。我周末在家,但周一早上第一件事就是试试。谢谢更让人困惑的是,如果您正在为web服务编写xml,正确的语法是谢谢,我不知道这一点。为什么它会退回所有的物品?应该抛出异常或返回null,如果我想要所有项目,我不会使用查询。