Отображение виджета нумерации страниц в Go - PullRequest
0 голосов
/ 23 апреля 2019

Я использую HTML-шаблоны в Go для рендеринга виджета нумерации страниц.Я пытаюсь следовать примеру, как это сделать здесь: https://www.solodev.com/blog/web-design/adding-pagination-to-your-website.stml

Это мой код до сих пор:

// Item size like call 2 item from database
var pagesize = 2
var PaginationSize int = 6
Pagination := make([]int, PaginationSize)

for i := 0; i < PaginationSize; i++ {
    if RequestPageNumber <= page {
        Pagination[i] = i + 1
    } else {
        Pagination[i] = RequestPageNumber + i
    }

    // Make it active
    if  i == 0 {
        Info.Pagination += template.HTML(fmt.Sprintf(`<li class="page-item active"><a class="page-link" href=?id=%v>%v</a></li>`,RequestPageNumber + i ,RequestPageNumber + i))
    } else {
        Info.Pagination += template.HTML(fmt.Sprintf(`<li class="page-item"><a class="page-link" href=?id=%v>%v</a></li>`,RequestPageNumber + i ,RequestPageNumber + i))
    }
}

Я хотел бы улучшить это, сделав нумерацию страницОбновление списка только тогда, когда активная страница становится кратной PaginationSize.Например, когда отображаемая нумерация страниц показывает

(1), 2, 3, 4, 5, 6

Если пользователь нажимает на 2, я хотел бы видеть

1, (2), 3, 4, 5, 6

Но мой текущий код отображает

(2), 3, 4, 5, 6, 7

После того, как страница перешла после 6, список страниц должен выглядеть следующим образом:

7, 8, 9, 10, 11, 12 ,13 ,14

Данные, заключенные в это представление разбиения на страницы, могут находиться в базе данных, поэтому я также буду признателен за советы о том, как это сделать.работать с базой данных, если возможно.

Спасибо.

1 Ответ

1 голос
/ 23 апреля 2019

Проверить следующее решение

package main

import (
    "fmt"
)

const PSIZE = 5

func pager(pageNo int) {
    var start int = pageNo/(PSIZE-1)*(PSIZE-1) + 1
    if pageNo%(PSIZE-1) == 0 {
        start -= PSIZE - 1
    }

    for i := start; i < start+PSIZE; i++ {
        if i == pageNo {
            fmt.Printf("(%d) ", i)
        } else {
            fmt.Printf("%d ", i)
        }
    }
    fmt.Print("\n")
}

func main() {
    pager(4)
    pager(8)
    pager(9)
}

Выход

1 2 3 (4) 5 
5 6 7 (8) 9 
(9) 10 11 12 13 

https://play.golang.org/p/rFslGe2OE0k

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...