ビューに基づいて、リスト内のアイテムの数を取得しようとしています。私がこれまでに試したすべての方法は、リストの総計のみを返します。検索中に遭遇したほぼすべての方法を試しましたが、すべて同じ結果になります。
これが私が試した方法の1つです:
SPWeb web = SPContext.Current.Web;
SPView view = web.GetViewFromUrl("url to my view");
int count = view.ParentList.GetItems(view).Count;
私のリストには28個のアイテムがありますが、参照しているビューはそれをフィルタリングし、4個のアイテムを表示します。私のカウントは28ではなく4になると思いますが、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でクエリをテストすると、期待どおりに4つの結果が返されます...
全体像は、カスタムメニューコントロールのOnMenuItemDataBoundイベントハンドラー内でこれを行っていることです。それがまったく違いを生むかどうかはわかりませんが、私が目指しているのは、特定のリストのビューにリンクしている各アイテムが、リンクの横にそのビューのアイテムの数を表示するということです。
フィルタリングされた合計ではなくリストの合計を取得する理由はありますか?ありがとう!