根据当前位置和总项目获取当前页面上的项目数

时间:2015-11-19 11:58:59

标签: c# algorithm

我有很长的项目列表,每页显示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;
}

4 个答案:

答案 0 :(得分:3)

我认为您需要将问题分成两个较小的问题。 第一个问题是找出你所在的项目在哪个页面。

const int PAGE_SIZE = 10;
int currentItemPage = (currentItemPosition / PAGE_SIZE) + 1;

第二个问题是找出你已经有多少整页。

int fullPages = totalItems / PAGE_SIZE;

最后,如果currentItemPagefullPages范围内,则表示您的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}}次数大于10CurrentCursorPosition的次数,则表示您不是在最后一页 - 并返回10.否则,返回10 ...