2012-01-04 41 views
7

Trên sự kiện pageLoad Tôi muốn đi tới hai Danh sách SharePoint khác nhau và lấy ListItem đầu tiên từ một danh sách và một ListItem cuối cùng trong một danh sách khác. Tôi không biết bất kỳ ID của ListItem nào nên tôi đoán điều này cần được thực hiện thông qua chỉ mục danh sách - chỉ cần không chắc chắn cách thực hiện điều này. Có được một xử lý trên Danh sách ai đó có thể tư vấn (bằng cách sử dụng C#) cách tốt nhất để có được các mục đầu tiên và cuối cùng cho kịch bản nêu trên?Lấy Danh sách Đầu tiên & Cuối cùng trong Danh sách Sharepoint

Trả lời

14

Điều kiện "mục đầu tiên" và "mục cuối cùng" không rõ ràng. Giả sử bạn muốn truy xuất đầu tiên và mới nhất đã tạo mục. Điều quan trọng cần lưu ý là việc truy xuất các mục qua chỉ mục của SPListItemCollection có thể chậm đối với các danh sách lớn kể từ khi truy cập SPList.Items trả về tất cả các mục trong danh sách. Đó là lý do tại sao tôi đề nghị sử dụng một truy vấn 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(); 

Đối với "mục cuối cùng" bạn có để đảo ngược thứ tự:

<OrderBy><FieldRef Name='ID' Ascending='FALSE' /></OrderBy> 

Nếu bạn muốn nhận được cuối cùng và mục đầu tiên dựa trên một điều kiện bạn chỉ cần thay đổi thứ tự theo trường.

Cập nhật:
Thậm chí tốt hơn sẽ được đặt hàng bởi trường ID. Với điều đó bạn có thể đạt được kết quả tương tự. Không chỉ tốt hơn, trường được tạo có thể đã được thay đổi thông qua mã như được chỉ ra bởi @Kobi.

+1

Rất đẹp. Tôi cũng khuyên bạn nên sử dụng ID, ngày "được tạo" có thể được đặt theo mã. Ngoài ra, nếu danh sách nhỏ, tôi không chắc chắn tôi sẽ bận tâm với truy vấn. – Kobi

+0

@Kobi, đó là sự thật. Tôi sẽ thay đổi ví dụ của tôi thành ID ... thx. – Stefan

2

Bạn có thể thử này để có được những ItemID cuối cùng

SPWeb web = SPContext.Current.Web; 
      SPList List = web.Lists[ListName]; 

      int itemId = List.Items[List.ItemCount - 1].ID; 

Trân trọng!

+1

nếu chúng tôi xóa hai mục, nó không phải công việc – TinTin

+0

Điều này làm việc tuyệt vời cho tôi. Tôi cần thực hiện một số thao tác trên một SPListCollection được sắp xếp, và tôi cần một giá trị từ mục cuối cùng trước khi tôi bước qua tất cả chúng. Điều này cho phép tôi làm điều đó mà không cần viết thêm một truy vấn CAML. Cảm ơn! – Chronozoa

+0

Làm thế nào về các mục bị xóa? –

Các vấn đề liên quan