我有很长的项目列表,每页显示10个项目。我所知道的是当前选择的行号(在1和总项目之间,当前页面中不是1-10)和项目总数。我需要计算当前页面上有多少项目。
例如,共有12个项目,所选行= 11,因此页面上会有2个项目(并且位于第2页)
如果该行为3,则答案为10,就像在第1页上一样,是一整页。
这是我的代码,但不起作用。我可以得到余数,但似乎无法弄清楚上半场。我确定我使用的功能
有一些明显的答案private int NumberOfItemsOnPage()
{
int itemsOnPage = 0;
if (CurrentCursorPosition + 10 <= TotalItems)
{
itemsOnPage = 10;
}
else
{
itemsOnPage = TotalItems % 10;
}
return itemsOnPage;
}
答案 0 :(得分:3)
我认为您需要将问题分成两个较小的问题。 第一个问题是找出你所在的项目在哪个页面。
const int PAGE_SIZE = 10;
int currentItemPage = (currentItemPosition / PAGE_SIZE) + 1;
第二个问题是找出你已经有多少整页。
int fullPages = totalItems / PAGE_SIZE;
最后,如果currentItemPage
在fullPages
范围内,则表示您的currentItem位于包含PAGE_SIZE
项的页面中,如果不是,则表示最后一页带有提醒项目。
int itemsInCurrentItemPage = currentItemPage <= fullPages ? PAGE_SIZE : totalItems % PAGE_SIZE;
答案 1 :(得分:0)
假设所有索引都是从0开始的:
var firstItemOnPage = currentCursorPosition / 10 * 10;
return (totalItems < firstItemOnPage + 10) ? totalItems - firstItemOnPage : 10;
(只是草图,我确定在某个地方出现了错误。这需要进行一些单元测试。)
答案 2 :(得分:0)
这应该做的工作,你需要整数除法:
private int NumberOfItemsOnPage(int currentPosition, int totalItems, int itemsPerPage = 10)
{
int currentPage = currentPosition / itemsPerPage + 1;
int maxPage = totalItems / itemsPerPage + 1;
int itemsOnPage = currentPage == maxPage ? totalItems / itemsPerPage : itemsPerPage;
return itemsOnPage;
}
答案 3 :(得分:-1)
我试试这个:
parser_port = '<span[^>]*>\s*([0-9]{2,})\s*</\s*span>'
p = re.compile(parser_port)
list_port = p.findall(html)
如果return (TotalItems / 10) > (CurrentCursorPosition / 10) ? 10 : CurrentCursorPosition % 10
中TotalItems
的{{1}}次数大于10
中CurrentCursorPosition
的次数,则表示您不是在最后一页 - 并返回10.否则,返回10
...