我有一个RadComboBox,一次加载10个项目(来自几百个项目)。为简单起见,数据源是List<Person>
,其中:
public class Person
{
public string Name { get; set; }
public int ID { get; set; }
}
我的服务和存储库方法在已经对其进行排序(按名称)和分页(每个请求10个项目)之后返回List<Person>
。我的问题是数据中的某个位置是“登录”用户的名称(我有该用户的ID)。我需要在列表的顶部显示该人(第一页,第一项。)
最好的方法是什么?
我想到了以下几点:
答案 0 :(得分:1)
如果您已拥有该用户所需的数据,则可以添加&#34;假冒&#34;用户对象到顶部并处理分页中的所有内容:
(未经过测试的代码,用记事本++编写)
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;
}
}