2011-01-14 45 views
1

我有一個RadComboBox一次加載10個項目(從幾百個項目)。爲了簡便起見,數據源是一個List<Person>其中:RadComboBox按需加載w /「粘」項

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

我的服務和資源庫方法返回List<Person>它已經被排序之後(按名稱)和分頁(10個項目,每個請求)。我的問題是,數據中的某處是「登錄」用戶的名稱(我有該用戶的ID)。我需要在列表頂部顯示該人(第一頁,第一項)。

什麼是最好的方式去做這件事?

我已經想好了以下內容:

  • 顯示1-11,而不是1-10在第一組,扔「登錄」用戶在頂部
  • 省略從登錄的用戶在 查詢後
+1

您已擁有此用戶對象或位置嗎?或者你需要從列表中獲取它。 – 2011-01-14 04:13:08

回答

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; 
    } 
}