2012-01-04 4 views
7

pageLoad 이벤트에서 나는 두 개의 다른 SharePoint 목록으로 이동하여 한 목록에서 첫 번째 ListItem을 가져오고 한 목록에서 첫 ListItem을 가져오고 다른 ListItem에서 마지막 ListItem을 가져 오려고합니다. ListItem ID 중 하나를 모르므로 목록 인덱스를 통해 수행해야합니다.이를 구현하는 방법을 잘 모릅니다. 목록에 핸들이 있으면 위에서 설명한 시나리오의 첫 번째 항목과 마지막 항목을 가져 오는 가장 좋은 방법을 조언 해줄 수 있습니까?Sharepoint 목록의 첫 번째 및 마지막 ListItem 가져 오기

답변

14

"첫 번째 항목"과 "마지막 항목"조건은 분명하지 않습니다. 첫 번째 및 최신 항목을 검색하려고한다고 가정합니다. 주목할 점은 SPList.Items에 액세스하면 목록의 모든 항목을 반환하므로 큰 목록의 경우 SPListItemCollection의 색인을 통해 항목을 검색하는 속도가 느릴 수 있다는 점입니다. 다른에 따라 마지막과 첫 번째 항목을 얻고 싶다면

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

: 당신이 순서를 반대로해야 "마지막 항목"에 대한

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(); 

: 나는 CAML 쿼리를 사용하는 것이 좋습니다 이유입니다 조건은 필드별로 순서를 변경하면됩니다.

업데이트 :
더 나은이 ID 필드에 의해 주문하는 것입니다. 그것으로 당신은 같은 결과를 얻을 수 있습니다. @Kobi가 지적한대로 작성된 필드가 코드를 통해 변경되었을 수 있습니다.

+1

아주 좋습니다. ID를 사용하는 것이 좋습니다. "만든 날짜"는 코드로 설정할 수 있습니다. 또한 목록이 작 으면 쿼리에 신경 쓰지 않을지 확실하지 않습니다. – Kobi

+0

@Kobi, 그건 사실입니다. 나는 나의 모범을 ID ... thx로 바꿀 것이다. – Stefan

2

당신은 마지막 항목 ID

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

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

안부를 얻기 위해이 시도 할 수 있습니다!

+1

우리가 gona 작업이 아닌 두 항목을 제거하면 – TinTin

+0

이것은 나에게 훌륭했습니다. 정렬 된 SPListCollection에 대해 몇 가지 연산을 수행해야했고 마지막 항목의 값이 필요했습니다. 이것은 내가 여분의 CAML 질의를 작성하지 않고 그것을 가능하게했다. 감사! – Chronozoa

+0

제거 된 항목 ID는 어때요 ?? –

관련 문제