【问题标题】:Get the First & Last ListItem in Sharepoint List获取 Sharepoint 列表中的第一个和最后一个 ListItem
【发布时间】:2012-02-02 08:04:09
【问题描述】:

pageLoad 事件中,我想转到两个不同的 SharePoint 列表并从一个列表中获取第一个 ListItem,在另一个列表中获取最后一个 ListItem。我不知道任何 ListItem ID,所以我想这需要通过列表索引来完成 - 只是不确定如何实现这一点。掌握了 List 后,有人可以建议(使用 c#)获取上述场景的第一项和最后一项的最佳方法吗?

【问题讨论】:

    标签: c# sharepoint sharepoint-2010


    【解决方案1】:

    “第一项”和“最后一项”的条件不是很清楚。假设您要检索第一个和最新的创建项目。需要注意的重要一点是,对于大型列表,通过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>
    

    如果您想根据另一个条件获取最后一个和第一个项目,您只需更改 order by 字段。

    更新:
    最好通过ID 字段订购。这样你就可以达到同样的效果。 不仅更好,正如@Kobi 指出的那样,创建的字段可以通过代码进行更改。

    【讨论】:

    • 非常好。我还建议使用 ID,“创建”日期可以通过代码设置。另外,如果列表很小,我不确定我是否会为查询而烦恼。
    【解决方案2】:

    你可以试试这个来获取最后一个itemID

    SPWeb web = SPContext.Current.Web;
                SPList List = web.Lists[ListName];
    
                int itemId = List.Items[List.ItemCount - 1].ID;
    

    问候!

    【讨论】:

    • 这对我很有用。我需要对已排序的 SPListCollection 执行一些操作,并且我需要从最后一项中获取一个值,然后再跨过它们。这使我无需编写额外的 CAML 查询就可以做到这一点。谢谢!
    • 删除的项目 ID 怎么样??!
    • 投了反对票,因为它只是在猜测最后一个项目的 ID。
    猜你喜欢
    • 2016-12-12
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 2015-01-18
    • 2016-06-05
    • 1970-01-01
    • 2013-06-23
    相关资源
    最近更新 更多