[英]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)。 我需要將該人顯示在列表的頂部(第一頁,第一項)。
最好的方法是什么?
我想到了以下幾點:
如果您已經擁有該用戶所需的數據,則可以在頂部添加一個“偽”用戶對象,並處理分頁中的所有內容:
(未經測試的代碼,用記事本++編寫)
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.