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

标签 sharepoint spquery

我正在尝试根据 View 获取列表中的项目数。到目前为止我尝试过的每种方法都只返回列表的总计。我尝试了搜索过程中遇到的几乎所有方法,但最终都得到了相同的结果。

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

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

我的列表有 28 个项目,但我引用的 View 对其进行了过滤并显示了 4 个项目。我预计我的计数是 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

因此,在这个方法中,我跳过 View ,只是尝试传入 CAML 查询。在 U2U 中测试我的查询时,按预期返回了四个结果...

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

有什么想法为什么我会得到列表总计而不是过滤后的总计吗?谢谢!

最佳答案

如果我提醒正确的话,你需要删除 <Query>来自您的SPQuery 。 CAML 构建器使用它,但在实际中没有必要 SPQuery 。当然,您需要确保这些字段存在。

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

关于SharePoint 的 List.GetItems(view) 返回所有项目而不是筛选的 View 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2478555/

相关文章:

sharepoint - 将JSP转换为SharePoint Webpart

c# - 将变量从服务器端传递到 JavaScript

c# - sharepoint 中的调查结果

c# - 如何在 SharePoint 2010 中设置 SPField 的内部名称?

sharepoint - 使用 SPQuery 检索不同/唯一值的最佳方法是什么?

java - 使用 Java 获取生成本体中同级类的名称并计算其数量

sharepoint - 如何从 SharePoint 更改搜索核心结果 Web 部件的设计?