2011-01-14 3 views
1

한 번에 10 개의 항목을로드하는 RadComboBox가 있습니다 (몇 백 개 항목). 이미 (요청에 따라 10 개 항목) (이름으로) 정렬 페이지 된 후RadComboBox 주문형 주문형로드 (load-on-demand)

public class Person 
{ 
    public string Name { get; set; } 
    public int ID { get; set; } 
} 

내 서비스 및 저장소 방법은 List<Person>를 반환 : 어디 단순 위해, 데이터 소스는 List<Person>이다. 내 문제는 데이터 내의 어딘가에서 "로그인 한"사용자의 이름입니다 (해당 사용자의 ID가 있음). 그 사람을 목록 상단에 표시해야합니다 (첫 페이지, 첫 번째 항목).

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

나는 다음과 같은 생각을 한 다음에서 로그인 한 사용자

  • 대신 첫 세트에서 1-10의 1-11보기, 상단
  • 생략에 사용자 "로그인"던지는 쿼리 및 이미 해당 사용자에 필요한 데이터가있는 경우, 당신은 페이징 모든 것을 상단에 "가짜"사용자 개체를 추가하고 처리 할 수 ​​
+1

이 사용자 객체 또는 위치가 이미 있습니까? 또는 목록에서 가져와야합니다. –

+0

@ The Scrum Meister - 기술적으로 모든 사용자에게 가져올 데이터가 있지만 가져와야합니다. 흠, 너 뭔가있을거야! –

답변

1

후에을의 추가

,

(코드 테스트 안함, 메모장 + +로 작성)

public class DummyPagerRepo 
{ 
    private List<Person> persons; 
    private Person userObject; 
    private int userIndex = -1; 

    public DummyPagerRepo(List<Person> persons, Person userObject) 
    { 
     this.persons = persons; 
     this.userObject = userObject; 
    } 

    public List<Person> GetPage(int pageSize, int pageOffset) 
    { 
     List<Person> results = new List<Person>(pageSize); 
     int start = pageOffset * pageSize; 
     if(pageOffset == 0) 
     { 
      result.add(userObject); 
      start++; 
     } 
     int end = Math.Min(persons.length, pageSize * (pageOffset + 1)); 
     for(int i = start; i < end; i++) 
     { 
      Person person = persons[i]; 
      if(userIndex == -1 && person.ID == userObject.ID) 
      { 
       userIndex = i; 
      } 
      else if(userIndex != i) 
      { 
       resutls.Add(person); 
      } 
     } 

     if(userIndex != -1 && start <= userIndex && end > userIndex && end < persons.length) 
     { 
      results.add(persons[end]); 
     } 
     return results; 
    } 
} 
관련 문제