簡體   English   中英

帶“粘性”項目的RadComboBox按需加載

[英]RadComboBox Load-On-Demand w/ “sticky” item

我有一個RadComboBox,一次可加載10個項目(數百個項目)。 為簡單起見,數據源為List<Person> ,其中:

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

在對List<Person>進行排序(按名稱)和分頁(每個請求10個項目)之后,我的服務和存儲庫方法返回List<Person> 我的問題是數據中某處是“已登錄”用戶的名稱(我有該用戶的ID)。 我需要將該人顯示在列表的頂部(第一頁,第一項)。

最好的方法是什么?

我想到了以下幾點:

  • 在第一組上顯示1-11,而不是1-10,將“已登錄”用戶置於頂部
  • 省略查詢中的登錄用戶,然后將其添加到查詢中

如果您已經擁有該用戶所需的數據,則可以在頂部添加一個“偽”用戶對象,並處理分頁中的所有內容:

(未經測試的代碼,用記事本++編寫)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM