在pageLoad
事件上,我想转到两个不同的SharePoint列表,从一个列表中获取第一个ListItem,在另一个列表中获取最后一个ListItem。我不知道任何ListItem ID,所以我想这需要通过列表索引来完成 - 只是不知道如何实现它。在列表上有一个句柄可以有人建议(使用c#)获得上述场景的第一个和最后一个项目的最佳方法吗?
答案 0 :(得分:14)
条件“第一项”和“最后一项”不是很清楚。假设您要检索第一个和最新的已创建项。需要注意的重要一点是,通过SPListItemCollection
的索引检索项目对于大型列表来说可能会很慢,因为访问SPList.Items
会返回列表中的所有项目。这就是我建议使用CAML查询的原因:
SPList list = // some list;
SPQuery query = new SPQuery();
query.RowLimit = 1;
query.Query = "<OrderBy><FieldRef Name='ID' /></OrderBy>";
return list.GetItems(query).Cast<SPListItem>().FirstOrDefault();
对于“最后一项”,您必须撤消订购:
<OrderBy><FieldRef Name='ID' Ascending='FALSE' /></OrderBy>
如果您想根据其他条件获取最后一项和第一项,您只需按字段更改顺序。
<强>更新强>
更好的方法是按
不仅更好,创建的字段可以通过@Kobi指出的代码进行更改。ID
字段排序。有了它,你可以获得相同的结果。
答案 1 :(得分:2)
您可以尝试此操作以获取最后一个itemID
SPWeb web = SPContext.Current.Web;
SPList List = web.Lists[ListName];
int itemId = List.Items[List.ItemCount - 1].ID;
问候!