<分区>
我正在创建一个自定义分页解决方案,但我正在努力想出一个算法来解决这个问题。
我需要创建一个索引位置,例如1 2 3 4 5(其中 1 代表所选索引)。当您考虑到我需要应用上限时,这显然变得更加复杂,例如,如果有 10 页并且当前选择的索引为 8,我希望包含 6 7 8 9 10. 如果我们选择最后一页,则将变为 6 7 8 9 10。
有人能为此指出正确的方向吗?我很难确切地知道我什至可以搜索什么来找到答案。
<分区>
我正在创建一个自定义分页解决方案,但我正在努力想出一个算法来解决这个问题。
我需要创建一个索引位置,例如1 2 3 4 5(其中 1 代表所选索引)。当您考虑到我需要应用上限时,这显然变得更加复杂,例如,如果有 10 页并且当前选择的索引为 8,我希望包含 6 7 8 9 10. 如果我们选择最后一页,则将变为 6 7 8 9 10。
有人能为此指出正确的方向吗?我很难确切地知道我什至可以搜索什么来找到答案。
最佳答案
这是我的看法。它与 Kyle's 非常相似除了它使用扩展方法并且当要显示的页面高于页面总数时它不会失败。
public IEnumerable<int> GetDisplayedPages(int currentPage,
int totalPages,
int pagesToDisplay)
{
if (totalPages <= pagesToDisplay) {
return Enumerable.Range(1, totalPages);
} else {
if (pagesToDisplay % 2 == 1) pagesToDisplay -= 1;
if (currentPage - (pagesToDisplay / 2) <= 0) {
return Enumerable.Range(1, pagesToDisplay + 1);
} else if (currentPage + (pagesToDisplay / 2) >= totalPages) {
return Enumerable.Range(totalPages - pagesToDisplay, pagesToDisplay + 1);
} else {
return Enumerable.Range(Convert.ToInt32(currentPage - (pagesToDisplay / 2)), pagesToDisplay + 1);
}
}
}
关于c# - 自定义分页问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5720187/