2

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

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

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 事件处理程序中执行此操作。我不知道这是否会有所不同,但我的想法是,链接到特定列表中视图的每个项目都会在链接旁边显示该视图中的项目数。

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

4

1 回答 1

6

如果我提醒正确,您需要<Query>SPQuery. CAML Builders 使用它,但在实际SPQuery. 当然,您需要确保字段存在。

MyQuery.Query = "<Where><Eq><FieldRef Name='strStatus' /><Value Type='Text'>submitted</Value></Eq></Where>";
于 2010-03-19T18:14:48.467 回答